Irf*_*aza 16 notifications android firebase google-cloud-messaging firebase-cloud-messaging
我在使用Firebase时遇到了Android应用程序的这个戏剧性问题.1.我的应用程序在第一次启动时收到令牌2.我能够从firebase控制台向注册令牌发送通知3.如果我尝试在步骤2之后再次使用控制台发送通知.它向我显示"未注册令牌"在第二次尝试之后.
我已经在清单中存在所有必要的配置,并且google service.json文件也已使用正确的配置.我相信事情是正确的,因为应用程序能够接收一次通知,问题才会在此之后开始.
更新1:如果我卸载应用程序并重新安装它,那么我也只能收到一次通知.
那些想要查看代码的人,这就是我获取令牌的方式:
@Override
public void onTokenRefresh() {
//Getting registration token
refreshedToken = FirebaseInstanceId.getInstance().getToken();
//Displaying token on logcat
Log.d(TAG, "Refreshed token: " + refreshedToken);
saveDeviceToken(refreshedToken);
}
Run Code Online (Sandbox Code Playgroud)
这只能在第一次启动时调用,之后,我还没有看到它被调用(我认为这是预期的行为).
收到的OnMessage也会在第一次通知时被调用,然后它永远不会被取消:
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
Log.d("FCM", "From: " + remoteMessage.getFrom());
if (remoteMessage.getNotification() != null) {
Log.d("FCM", "Notification Message Body: " + remoteMessage.getNotification().getBody());
sendNotification(remoteMessage.getNotification().getBody());
}
}
Run Code Online (Sandbox Code Playgroud)
更新2:尝试使用相同的服务器密钥和令牌命中FCM的HTTP api并获得以下响应:
{
"multicast_id": 6286279702096230688,
"success": 0,
"failure": 1,
"canonical_ids": 0,
"results": [
{
"error": "NotRegistered"
}
]
}
Run Code Online (Sandbox Code Playgroud)
为了避免交叉问题,这里有更多细节:
更新3:Firebase崩溃,数据库和存储工作在同一个项目中(显示google service.json文件正确).
请帮我修好.
Irf*_*aza -2
这是我解决的方法。
正如每个人所指出的,.json 文件的包名称可能是此失败的主要原因,这在这里也是正确的,但有所不同。
我已从 Firebase 下载了 .json 文件,并假设正在下载正确的 .json 文件。不幸的是,由于 Firebase 在下载文件时存在一些错误,我总是获取其他一些项目(firebase 应用程序)的 .json 文件。在下载下载的文件时,我弄清楚了并在 .json 文件上手动更改包名称和密钥。
我建议每个人在尝试其他任何操作之前检查包含的 .json 文件,因为这是此类问题的主要原因。
| 归档时间: |
|
| 查看次数: |
3793 次 |
| 最近记录: |