【问题标题】:Storing token values as keys in firebase database将令牌值作为键存储在 firebase 数据库中
【发布时间】:2017-07-09 05:51:11
【问题描述】:

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

【问题讨论】:

  • 你的日志语句被调用了吗?

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


【解决方案1】:

这就是我的做法:

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 函数发送通知时,您可以删除不再起作用的令牌。通过这样做,您将能够向所有用户的设备发送通知,而不会浪费时间尝试向错误的令牌发送通知。

【讨论】:

    猜你喜欢
    • 2018-11-12
    • 2018-02-23
    • 1970-01-01
    • 2014-11-02
    • 2021-08-15
    • 2017-10-30
    • 2017-12-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多