将标记值存储为firebase数据库中的键

时间:2017-07-09 05:51:12

标签: android firebase firebase-realtime-database firebase-cloud-messaging

我正在尝试将令牌值存储为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的新手。非常感谢你的帮助!

1 个答案:

答案 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功能发送通知时,您可以删除不再有效的令牌。通过这样做,您就可以向所有用户的设备发送通知,而不会浪费时间尝试向有故障的令牌发送通知。