【问题标题】:push notification with cordova and firebase Cloud messaging:registrationID keep changing使用 cordova 和 firebase 云消息推送通知:registrationID 不断变化
【发布时间】:2016-12-14 09:04:04
【问题描述】:

使用cordova插件ktekosi-phonegap-plugin-push,我得到registrationID

var push = PushNotification.init({ "android": {"senderID": "my sender ID"}});

push.on('registration', function(data) {
    console.log(data.registrationId);
    document.getElementById("fcm_id").innerHTML = data.registrationId;
});

所以我可以由服务器使用它通过 FCM 发送通知。

我怎样才能永远修复这个registrationID?这是特定于应用的 ID 还是特定于用户的 ID?

【问题讨论】:

  • 你遇到什么问题???更改注册ID或发送消息
  • 当我使用此代码加载应用程序时,registrationID 上方的代码随时间而变化
  • 这个 ID 是 appID 还是“已安装应用的实例”ID。换句话说,它是特定于应用程序的还是特定于用户的?
  • 如果您安装了一次应用程序,那么它应该保持不变,除非有新的更新或重新安装应用程序。否则每次打开应用程序时,它都保持不变。
  • mm 我刚刚重新打开了应用程序,它是另一个registrationID...

标签: android cordova push-notification firebase-cloud-messaging


【解决方案1】:

推送注册ID会随着时间而改变。这是一个常见的情况。这既不是已安装应用程序的实例,也不是特定于应用程序或特定于用户的 id。

当应用上线时,您需要每次获取推送注册 ID,然后将其传递给您的后端服务器,以使您的后端服务器使用推送注册 ID 进行更新。

然后,您的后端服务器将生成推送通知,并将其发送到 FCM,并使用其拥有的特定推送注册 ID。 FCM 然后管理在您的移动应用程序中接收推送通知。

我已经answered a question here 告诉了推送通知系统的工作原理。你可能会看看。

更新

看起来谷歌已经改变了它的新 gcm 库,正如这里所说的答案 - https://stackoverflow.com/a/16839326/3145960。你可以看看这里。因此,正如我所读到的,推送注册 ID 仅在应用收到更新或 android 操作系统更新时更新。现在简单多了。

【讨论】:

  • 感谢雷兹!你能准确地说“应用上线”和“每次”是什么意思吗?
  • 应用上线,每次的实际意思都一样。每次启动应用程序时,您都需要先获取推送注册 ID,并且必须将其发送到服务器,以保持服务器更新为我之前所说的最新推送注册 ID。
  • 好的,谢谢。我完全不明白的是registrationID何时更新,但感谢你,我明白你需要在服务器和应用程序之间保持双向通信
  • 很高兴知道这有帮助!我们实际上不知道注册 ID 何时更新。我们实际上也不必为此烦恼。
  • 好吧,如果用户长时间不启动应用程序,它可能会停止收到通知,那么如果同时更新,不是吗?
【解决方案2】:

尝试使用这个插件“cordova plugin add cordova-plugin-fcm”。你可以找到详情here

要获取注册 ID 像这样使用它

<script type="text/javascript">
          function onLoad() {
          document.addEventListener("deviceready", Fire, false);
                               }

            function Fire() {

                FCMPlugin.getToken(
                  function (token) {

                       alert(token)
                  },
                  function (err) {
                           alert("Error: " + 'error retrieving token: ' + err);
                  }
                );

            };


        </script>
 <body onload="onLoad();">

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-08
    • 2016-12-13
    • 1970-01-01
    • 2020-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多