GCM遷移到FCM
2019年4月11日,Google將停用GCM伺服器和客戶端的API,因此需在此之前將GCM遷移到FCM。
遷移分為兩種情況:
將GCM專案遷移到FCM
適用於GCM專案尚未整合Firebase、為該專案新建Firebase專案的情況。
遷移過程涉及到Firebase控制檯、客戶端、伺服器三個部分。
遷移步驟如下:
3. 客戶端:在AndroidManifest中刪除GCM相關許可權和receiver
注意:warning::根據官方demo ,獲取token的方式與文件有出入,應使用如下方法:
監聽新token
public class MyFirebaseMessagingService extends FirebaseMessagingService { /** * Called if InstanceID token is updated. This may occur if the security of * the previous token had been compromised. Note that this is called when the InstanceID token * is initially generated so this is where you would retrieve the token. */ @Override public void onNewToken(String token) { Log.d(TAG, "Refreshed token: " + token); // If you want to send messages to this application instance or // manage this apps subscriptions on the server side, send the // Instance ID token to your app server. sendRegistrationToServer(token); } // [END on_new_token] }
獲取token
// Get token // [START retrieve_current_token] FirebaseInstanceId.getInstance().getInstanceId() .addOnCompleteListener(new OnCompleteListener<InstanceIdResult>() { @Override public void onComplete(@NonNull Task<InstanceIdResult> task) { if (!task.isSuccessful()) { Log.w(TAG, "getInstanceId failed", task.getException()); return; } // Get new Instance ID token String token = task.getResult().getToken(); } }); // [END retrieve_current_token]
將GCM專案遷移到(已有的)Firebase專案
適用於已有Firebase專案,將現有GCM專案新增至該Firebase專案的情況。
遷移步驟如下:
-
執行上一節的第2-5步。
-
使用不帶引數的getToken() 獲取token,將其與Firebase專案和server key關聯
-
[如有] 取消tokens在GCM專案topics的訂閱,並重新訂閱到等效的Firebase專案的topics
-
使用舊server key 向現有的GCM專案例項(舊tokens)傳送訊息,直到舊例項都升級為FCM例項
如需測試遷移正確性,請參閱:
FCM推送測試:傳送測試訊息