我正在尝试将令牌值存储为firebase数据库的键。像这样:
"Token" : {
"-KoWsMn9rCIitQeNvixr" : {
"dK1FjGbNr6k:APA91b...S8JK2d69JpO" : "true"
},
...
}
我正在使用firebasebaseinstanceid来生成令牌。但令牌根本不存储在数据库中。
public class MyFirebaseInstanceIdService extends FirebaseInstanceIdService {
private static final String REG_TOKEN="REG_TOKEN";
private DatabaseReference databaseReference=FirebaseDatabase.getInstance().getReference().child("Token");
@Override
public void onTokenRefresh() {
String recent_token = FirebaseInstanceId.getInstance().getToken();
Log.d(REG_TOKEN, recent_token);
final DatabaseReference newPost = databaseReference.push();
newPost.child(recent_token).setValue("true");
}
}
我是firebase的新手。非常感谢你的帮助!
答案 0 :(得分:0)
我就是这样做的:
String userToken = FirebaseInstanceId.getInstance().getToken();
mTokenRef = mRef.child("user_tokens").child(currentUser.getUid()).child(userToken);
mTokenRef.setValue(true, new DatabaseReference.CompletionListener() {
@Override
public void onComplete(DatabaseError databaseError, DatabaseReference reference) {
if (databaseError != null) {
Log.e(TAG, "Failed to write message", databaseError.toException());
Toast.makeText(context, "Error :( Your profile was not updated",Toast.LENGTH_LONG).show();
}
如果您在每次用户打开应用程序时在MainActivity中添加此代码,它将向数据库添加新令牌。当您通过firebase功能发送通知时,您可以删除不再有效的令牌。通过这样做,您就可以向所有用户的设备发送通知,而不会浪费时间尝试向有故障的令牌发送通知。