当我使用usertoken字符串(有时)获取数据快照时,Firebase数据库快照返回null,为什么?

时间:2016-11-22 18:06:46

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

我刚开始在我的数据库中存储usertokens以进行通知。除了使用某些usertoken字符串值之外,我没有问题存储和检索数据。但是,当我使用usertoken获取数据快照时,它返回null,但有时只是。

我的听众看起来像这样(只是一个普通的听众):

udRef.addListenerForSingleValueEvent(new   ValueEventListener () { 
@Override
public void onDataChange(DataSnapshot datasnapshot) { 
User user = datasnapshot.get value(User.class);

//do something with data here 
//eg. Log.e("ERR", String.value Of(user));  
//returns "null" for SOME users only, keep reading.

} 
@Override
public void onCancelled (DatabaseError databaseError) {  ... }

});

当用户创建帐户时,它会自动插入如下所示的字符串标记:

"cL_AEuSZa1I:APA91bF9R-dDetqrSNMQMzAoHRmLOHXK2acK_zJLhFhZ5IhvNChPSx4P943GirVwsy5walc0RrvyGnMm49oLxNJ-uKsGRCELhJ-9kwnPmdHOyWJWz0Esm_Y0MB7BypNUuQ4qZQmoW5nO"

令牌用于使用FCM的推送通知。根据FB人员的建议自动刷新。上面的令牌无效,实际上这个usertoken让我的数据快照不起作用所以我不得不手动删除它!是的,立即删除它我能够捕获快照,它不再返回null。

我不知道我做错了什么,但是当我在数据库中的usertokens看(用我的眼睛,而不是脚本)时,我可以知道哪些会很麻烦。这是如何:

所有usertokens都太长了,所以Firebase的网络控制台会像这样缩短"gftgvdgGhbgfc_fggg..."

所有麻烦的令牌也被切断,但没有3点或关闭引号,它们看起来像"gftgvdgGhbgfc_fggg但是在展开时它们是正常的,就像工作的那样(长度相同)。

我有30个用户,所以我可以很容易地完成所有这些:D

这是我的数据(大致)的样子:

"fhgfFghDfgghhfDDf" : {
    "username" : "a_string_here"
    "userPic" : "looong_string_link_to_fb_storage"
    "usertoken" : "long_user_token_like the_one_in_question"
},...

我是否错误地存储了令牌?,我应该将它们转换为其他数据类型吗? FB中有太多'陷阱':(

请注意,我没有其他任何问题,除了usertokens使我的datasnapshot为null,所以代码中的任何错误只是打字错误(我从手机中输入我的笔记本电脑屏幕输入这个问题...不要问)

0 个答案:

没有答案