在 android 从 gcm 迁移到 fcm

Migrating from gcm to fcm on android

我想在 android 应用程序中从 gcm 迁移到 fcm。 我是否需要从 gcm 向 android 应用程序的老用户发送推送通知,或者我可以从服务器通过新的 fcm 发送它?

FCM 工作正常我可以通过 fcm 在我的设备上接收推送通知,但我无法从 FCM 控制台向旧的 GCM 注册令牌发送推送通知。


下面是我添加到我的清单文件中以使 fcm 工作的代码-

<uses-permission android:name="com.google.android.z.permission.RECEIVE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<application>
    <service
        android:name=".view.activity.MyFcmListenerService">
        <intent-filter>
            <action android:name="com.google.firebase.MESSAGING_EVENT" />
        </intent-filter>
    </service>

    <service
        android:name=".view.activity.MyInstanceIDListenerService">
        <intent-filter>
            <action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
        </intent-filter>
    </service>
</application>

我想你可以通过FCM发送。要了解有关 FCM 的更多信息,您可以查看 frequently asked questions about GCM to FCM 的文档。此外,如果您开始从 GCM 迁移到 FCM,您可以按照以下教程操作:

还有更多信息,你可以查看这个

我搜索了很多,但没有找到满意的答案。所以,我应用了这个修复程序。

我将继续使用我用来向 GCM 用户发送推送通知的旧方法,对于通过 FCM 注册的用户,我可以通过 FCM 或 Firebase 通知控制台向他们发送推送通知。

P.S。您无法通过 FCM 向 GCM 注册令牌发送推送通知。

实际上它确实有效 FCM 和 GCM 在同一引擎下。 GCM 的令牌也适用于 FCM。

GCM tokens retrieved via GoogleCloudMessaging.register() or InstanceID.getToken() will continue to work in FCM without any modification or renewal.

您需要做的就是更改客户端实现,如前所述here。并将您的服务器端点更新为 fcm.googleapis.com/fcm/

我已经对相同的场景进行了 POC,下面给出了我观察到的结果

"There is no code change require from client side when you trying to migrate GCM to FCM, and i have tested in both Android and iOS it's working fine. Only change require to do proper configuration in FCM console (i.e give correct bundle id and project id (senderid))"