Google Cordova 澄清的云消息传递

Google Cloud Messaging for Cordova Clarification

我正在我的 cordova 应用程序中实施 Google 云消息服务。到目前为止一切正常。然而,我有一些困扰我的问题,我希望有人能为我澄清它们。 1) 在代码的这一部分,我获取设备 GCM regID 并将其进一步保存到我的服务器上。我想知道我是否应该调用此脚本,从而在用户打开应用程序时将 GCM regID 保存到我的服务器,或者应该调用并保存一次..

function onNotification(e) {
switch( e.event )
{
case 'registered':
    if ( e.regid.length > 0 )
    {                    
        console.log("regID = " + e.regid);
    }
   break;
   }
 }

2) 我在控制台上注意到我的注册 ID 有时会发生变化。我想知道为什么会发生这种情况,这是否正常以及我是否应该在我的服务器上更新用户 GCM regID。

如果有人能为我澄清这些,我将很高兴。谢谢

您只需将您的注册令牌发送到您的服务器一次。如果您的注册令牌发生变化,您应该将更改后的注册令牌发送到您的服务器。

如果应用程序被卸载并重新安装,或者如果 GCM 确定令牌已以某种方式泄露,注册令牌可能会更改。

您应该注册一个服务来监听注册令牌的变化,它应该扩展 InstanceIDListenerService 并且您重写它的 onTokenRefresh 方法,如下所示:

@Override
public void onTokenRefresh() {
    // Fetch updated Instance ID token and notify our app's server of any changes (if applicable).
    InstanceID instanceID = InstanceID.getInstance(this);
    String token = instanceID.getToken(getString(R.string.gcm_defaultSenderId),
            GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
    Log.i(TAG, "GCM Registration Token: " + token);

    // Send token to server.
}

考虑 GCM getting started documentation 了解更多详情。

对于(1)它应该被调用并保存在服务器上一次。在我的应用程序中工作并将此 ID 保存到服务器一次,一切正常。 对于 (2) 但是在开发过程中,注册 ID 有时会发生变化。原因是在开发中我们完全卸载或重新安装应用程序。从而使注册 ID 成为应用程序安装时分配的 change.because 注册 ID。但对于特殊情况也 see this.

  1. 你应该每次都调用脚本。仅在更改后更新注册 ID。

  2. 阅读我的 . Also, this answer 了解更多详情