android - 如何初始化 Firebase 库?
问题描述
我想将聊天消息保存到 Firebase 实时数据库。
在此之前,必须初始化 Firebase 库。这是如何运作的?代码 Firebase.AndroitSetContext(this); 不幸的是已经过时了。
后续的创建代码如下:
sendButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String messageText = messageArea.getText().toString();
if(!messageText.equals("")){
Map<String, String> map = new HashMap<String, String>();
map.put("message", messageText);
map.put("user", UserDetails.username);
reference1.push().setValue(map);
reference2.push().setValue(map);
messageArea.setText("");
}
}
});
reference1.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
Map map = dataSnapshot.getValue(Map.class);
String message = map.get("message").toString();
String userName = map.get("user").toString();
if(userName.equals(UserDetails.username)){
addMessageBox("You:-\n" + message, 1);
}
else{
addMessageBox(UserDetails.chatWith + ":-\n" + message, 2);
}
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
}
以下示例不起作用:
Firebase.setAndroidContext(this);
reference1 = new Firebase("https://androidchatapp-76776.firebaseio.com/messages/" + UserDetails.username + "_" + UserDetails.chatWith);
reference2 = new Firebase("https://androidchatapp-76776.firebaseio.com/messages/" + UserDetails.chatWith + "_" + UserDetails.username);
有人能帮我吗?
解决方案
new Firebase(...)
和Firebase.AndroitSetContext (this)
指向 Firebase SDK 的一个非常旧的版本(2016 年 5 月之前发布)。我强烈建议您查找更新的教程,或者从 Firebase 自己的文档或codelab开始,它(方便地)也用于构建聊天应用程序。
一些细节:
setAndroidContext()
不再需要调用,因为它由库(或其他 API 调用)自动确定需要的位置。- 这些天来的电话
new Firebase(...)
看起来像。FirebaseDatabase.getInstance().getReference()
不再需要 URL,因为它会google-services.json
在构建期间自动从文件中提取。
但如前所述,我强烈建议从更新的教程或文档开始。
推荐阅读
- c# - Visual Studio中文件浏览器的C#文件位置
- java - 如何将文件上传到 GCS 存储桶 android 中存在的文件夹中
- sql - 将本地时间转换为 UTC 格式不正确
- sql - 如何使用 WITH 子查询更新或插入数据?并避免`PG::UndefinedTable: ERROR: missing FROM-clause entry for table`错误
- vb.net - 如何限制用户不更新日期和星期文本框
- python - 在远程机器上使用 python 连接 mariadb
- c# - 如何在 IntegrationTest 中使用 NSubstitute 进行模拟
- mongodb - 如果从映射的 POJO 类中删除该字段,如何使用 morphia 从 mongo 集合中获取特定字段?
- swift - SWIFT - 无法得到 response.result.isSucess
- bash - 如何在bash shell中的case语句中使用数组?