Tag: firebase

使用RxJava加入来自Firebase实时数据库的扁平化数据

加入扁平的数据是文档中描述的常见用例。 但是文档显示了一个不是实时的简单例子,它不会对变化做出反应。 我正在寻找更强大的实施。 我认为RxJava是理想的。 考虑以下Firebase结构: { "messages": { "group_id_1": { "message_id_1": { "text": "Hello", "author": "uid_1" } } }, "users": { "uid_1": { "name": "David" } }, "rooms": { "room_id_1": { "name": "General", "members": { "uid_1": true } } } } 我在这里看到两个用例: 获取具有作者姓名的组中的消息列表 我想我会得到Observable<Message> ,当我订阅它时,依赖关系(这些消息的用户)也将在一些缓存中订阅。 当我显示消息时,我可以从缓存中获取作者的名字。 这也是实时的 – 如果作者名称改变,可观察者发出改变的消息。 当我取消订阅observable时,也会依赖取消订阅。 获取他们名字的房间成员名单 我想我会得到Observable<User> ,当我订阅它,它将首先订阅房间的成员,然后个人用户。 这是实时的 – […]

在Android中将地图转换为捆绑

有一个简单的方法来转换一个地图到一个捆绑在android中没有明确的迭代? 为什么? Firebase将返回一个通知地图getData() 。 我需要将数据传递给一个意图。 以前GCM给了我一个捆绑,所以我不需要担心这个。

FirebaseDatabase根引用在事务中为空

我正在尝试执行Firebase事务,以便更改我的Firebase数据库中两个位置的值,但交易处理的MutableData为空。 是否禁止在数据库根上运行事务? 我是否必须运行多个链接的交易才能完成此操作? val ref = FirebaseDatabase .getInstance() .getReference("/") ref.runTransaction(object : Transaction.Handler { override fun doTransaction(currentData: MutableData): Transaction.Result { println( currentData) // { key = <none>, value = null } if (currentData.value == null){ return Transaction.success(currentData) } currentData.child("users/{userID}/someVal/").setValue(X) currentData.child("items/{itemID}/someVal/").setValue(Y) return Transaction.success(currentData) } })

如何使用Firebase服务器时间戳生成日期?

目前,Google版本的ServerValue.TIMESTAMP返回{".sv":"timestamp"} ,一旦将数据保存到Firebase服务器,该版本将用作Firebase的指令,以便用该服务器时间戳填充该字段。 但是,当您在客户端创建数据时,您还没有实际的时间戳(即用作创建日期)。 在初始保存和随后的检索之后,您只能访问时间戳,我想 – 这有时为时已晚,不够优雅。 Google之前: 更新:忽略这一部分,因为它是不正确的 – 我误解了这些例子。 ServerValue.TIMESTAMP总是返回{".sv":"timestamp"} 。 据我所知,在谷歌Firebase之前,似乎有一个服务器生成的时间戳,允许您获取实际的时间戳: import com.firebase.client.ServerValue; ServerValue.TIMESTAMP // eg. 1466094046 ( 参考文献1 , 参考文献2 ) 问题: 这样的保存/检索是获得我的模型实例上的服务器生成的创建日期的唯一方法吗? 如果是的话,你能提出一个实施这种模式的方法吗? 我是否正确理解ServerValue.TIMESTAMP随着Google收购Firebase而改变? 更新:不,@FrankvanPuffelen回复说,收购过程中没有任何变化。 注意: 我不考虑在客户端使用new Date() ,因为我一直在阅读它是不安全的,但如果你认为不同,请分享你的想法。

在android中加载页面加载firebase数据

我搜索了很长时间,我只能找到一个解决方案使用addListenerForSingle事件触发onDataChanged。 它只在数据库发生变化时触发。 我怎样才能得到一个页面加载的单个值(我的意思是onCreate)? 例如,获取密钥真的很容易, mReference.child("kotran").child("isactive").getKey() //isactive 但是没有办法获得价值。

将Firebase中的数据加载到ExpandableList

我试图在我的应用程序中使用可扩展列表。 我遵循这些步骤 ,但我坚持如何从Firebase检索数据,将它们添加为我的代码Dummydata。 这里是主要的活动 public class MainActivity extends AppCompatActivity { ExpandableListAdapter myAdapter; ExpandableListView myList; List<String> listDataHeader; HashMap<String,List<String>> listDataChild; private FirebaseDatabase mFirebaseDatabase; private DatabaseReference mDatabaseReference; private ChildEventListener mChildEventListener; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // get the listview myList=(ExpandableListView)findViewById(R.id.Explist); prepareListData(); myAdapter= new ExpandableListAdapter(this,listDataHeader,listDataChild); myList.setAdapter(myAdapter); } private void prepareListData(){ mFirebaseDatabase= FirebaseDatabase.getInstance(); mDatabaseReference = mFirebaseDatabase.getReference().child("category"); //Read […]

如何在Firebase中创建多个孩子

我正在开发一个需要以特定方式将数据发送到Firebase的项目: var ref = firebase.database().ref('Codes').child(firebaseUser.uid).child(className); 但是,我不能使用这段代码发送数据。 我如何通过两个孩子的位置发送数据。

从Firebase数据库检索数据:发送给实例的无法识别的选择器

我有一个Firebase数据库,如下所示: 我没有问题保存到数据库,但是当我试图以下列方式检索数据: //Properties @IBOutlet weak var bike1LBL: UILabel! @IBOutlet weak var bike2LBL: UILabel! @IBOutlet weak var bike3LBL: UILabel! @IBOutlet weak var bike4LBL: UILabel! @IBOutlet weak var chainLBL: UILabel! @IBOutlet weak var brakeLBL: UILabel! @IBOutlet weak var locationLBL: UILabel! @IBOutlet weak var phoneLBL: UILabel! override func viewDidLoad() { super.viewDidLoad() var ref = Firebase(url:"sdfghjkl/firebaseio.com/Order/") // Retrieve new […]

转换字节码时出错 – DexException – Firebase身份验证

我刚刚尝试了Firebase身份验证用户界面。 但是在运行DexException项目的时候出来了。 我已阅读Firebase Github中提供的所有自述文件,但找不到解决方案。 我很困惑我是否错过了什么。 添加了渐变和错误日志。 我的应用程序gradle如下: apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' android { compileSdkVersion 25 buildToolsVersion "26.0.0" defaultConfig { applicationId "com.writein.results" minSdkVersion 21 targetSdkVersion 25 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" multiDexEnabled true } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } packagingOptions { exclude 'META-INF/LICENSE' exclude […]

Google Firebase在Android应用中注销并忘记用户

我面临着下一个问题: 当我打电话给mFirebaseAuth.signOut(); 或者mFirebaseUser.delete(); 我的FirebaseAuth.AuthStateListener()工作正常,并返回null作为onAuthStateChanged FirebaseUser实例,我刷新用户界面,并显示“用Google登录”按钮。 但是当我想再次登录时,我看不到用户的弹出窗口(我的设备上有两个用户,附加了图像)。 应用程序仅在首次登录时显示此弹出窗口,之后它将使用同一用户。 如果我在设置屏幕上清除应用程序的数据,我将能够再次看到这个弹出窗口。 我的问题是如何在每次退出后显示这个弹出窗口。 更新:我按下登录按钮时运行此代码: GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) .requestIdToken(getString(R.string.default_web_client_id)) .requestEmail() .build(); mGoogleApiClient = new GoogleApiClient.Builder(this) .enableAutoManage(this /* FragmentActivity */, this /* OnConnectionFailedListener */) .addApi(Auth.GOOGLE_SIGN_IN_API, gso) .build(); Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient); startActivityForResult(signInIntent, FirebaseActivity.REQUEST_SIGN_IN); 在onActivityResult()我创建一个GoogleSignInResult的实例,所以我需要的一切发生后,我打电话startActivityForResult()