我剛剛根據本指南here將GCM更新爲FCM。該網站表示,我的服務擴展FirebaseInstanceIdService將被稱爲一旦生成令牌。出於某種原因,我的服務從未被調用,並且從未執行過onTokenRefresh
。Firebase Cloud Messaging not calling FirebaseInstanceId
我的服務註冊這樣的,根據指南:
<service android:name=".fcm.FcmService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>
<service android:name=".fcm.InstanceIdService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCEID_EVENT"/>
</intent-filter>
</service>
我的服務:
public class InstanceIdService extends FirebaseInstanceIdService {
private static final String TAG = "InstanceIdService";
@Override
public void onTokenRefresh() {
String token = FirebaseInstanceId.getInstance().getToken();
Log.e(TAG, "Got token: " + token);
}
}
的logcat的沒有說的缺少配置文件或其他任何東西,我可以請參閱關於FirebaseApp的日誌和提及該令牌的日誌條目,但仍然不會調用我的服務。
我需要在我的活動某處啓動此服務嗎? 我做錯了什麼?有人能以正確的方向引導我嗎?
編輯:使用Log.e("TOKEN", "Token: " + FirebaseInstanceId.getInstance().getToken());
正確打印我的令牌,這意味着它已成功生成。該服務仍然不叫...
編輯2:更改INSTANCEID_EVENT INSTANCE_ID_EVENT固定的問題,雖然我不得不重新安裝該應用程序。由於我已經發布了包含新FCM的測試版本,因此我的測試版測試人員將無法訂閱主題以回覆收到的消息。那麼我應該如何解決這個問題?
對於它的價值,一個文檔(https://firebase.google.com/docs/cloud-messaging/android/client#manifest)表示意圖過濾器應該是'INSTANCE_ID_EVENT',另一個(https://developers.google.com/cloud-messaging/android/android-migrate-fcm#update_the_android_manifest)表示'INSTANCE ID_EVENT'。這兩者似乎都不適合我 - 我和你有同樣的問題。 –
@ZachRattner這對我來說很好,很好!確保在更改後重新安裝應用程序。 – Endanke
我可以確認INSTANCE_ID_EVENT爲我工作,但不是INSTANCEID_EVENT – hordurh