我在使用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);
}
這得到調用只有首先推出,之後,我還沒有看到它獲取調用(我認爲是預期的行爲)。
的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());
}
}
更新2: 嘗試使用同一服務器密鑰和令牌擊中FCM的HTTP API,並得到如下回應:
{
"multicast_id": 6286279702096230688,
"success": 0,
"failure": 1,
"canonical_ids": 0,
"results": [
{
"error": "NotRegistered"
}
]
}
只是爲了避免交叉問題,這裏有一些細節:
- Android的工作室:V2.3.1
- 谷歌播放服務版本:10.0.1
- 庫包括:核心,數據庫,存儲,通訊 - 一切都具有相同版本的谷歌播放服務10.0.1
更新3:Firebase崩潰,數據庫和存儲在同一個項目中工作(顯示google service.json文件是正確的)。
請幫我解決它。當
測試時,您是否嘗試先卸載並重新安裝應用程序? –
是的!我試過這個。我也嘗試重建緩存,完成包和json文件的更改。 –
我建議你**將google play服務和firebase更新到最新的10.2.4 **。 Firebase仍處於後期測試階段,其許多功能會在更新中得到修復,例如從Firebase 10.0.x到10.2.x,用戶名/照片的更改很麻煩,並且沒有實時顯示-登錄。在與Firebase多次聯繫之後,它已經得到修復。當你的應用程序在後臺運行時,也會調用** onMessageReceived()**。如果您的應用程序已停止,則通知將由默認系統通知處理。 – Nihal