我的清单中已经有了所有必要的配置,并且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);
}
这个函数只在第一次启动时被调用,之后我没有看到它被调用过(我认为这是预期的行为)。
OnMessage received也会在第一次通知时被调用,然后它就再也不会被调用了:
@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());
}
}
更新2: 尝试使用相同的服务器密钥和令牌命中 FCM 的 HTTP API,得到以下响应:
{
"multicast_id": 6286279702096230688,
"success": 0,
"failure": 1,
"canonical_ids": 0,
"results": [
{
"error": "NotRegistered"
}
]
}
为了避免混淆,这里提供更多细节:
- Android Studio版本:v2.3.1
- Google Play服务版本:10.0.1
- 包含的库:核心,数据库,存储,消息 - 所有的版本都与Google Play服务10.0.1相同
更新3:Firebase崩溃,数据库和存储在同一个项目中工作(这表明google-service.json文件是正确的)。
请帮助我解决这个问题。