0

使用科爾多瓦插件ktekosi-phonegap-plugin-push,我得到的registrationID推送通知: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?

+0

你有什麼問題?改變註冊ID或發送消息 –

+0

當我加載應用程序與此代碼上面的註冊ID正在改變時間 – Matoeil

+0

是ithis ID是一個appID或'已安裝的應用程序'的實例ID。換句話說,它是應用特定的還是用戶特定的? – Matoeil

回答

1

Push註冊ID會隨時間而改變。這是一個常見的情況。這既不是已安裝應用程序的實例,也不是應用程序特定的或用戶特定的ID。

當應用程序聯機時,您需要獲取推送註冊ID,然後每次將其傳遞到後端服務器,以使後端服務器使用推送註冊ID進行更新。

您的後端服務器將生成一個推送通知,並將其發送到FCM並使用其具有的特定推送註冊ID。然後FCM管理您的移動應用程序中接收推送通知。

我已經告訴answered a question here如何推送通知系統的工作原理。你可能會看看。

更新

看起來像谷歌作爲回答說這裏已經改變了其新的GCM庫 - https://stackoverflow.com/a/16839326/3145960。你可以看看這裏。所以,正如我讀過的,只有當應用程序收到更新或android os更新時,纔會更新推送註冊ID。它現在更簡單了。

+0

謝謝reaz!你可以準確地知道你的意思是'應用程序聯機'和'每次'。 – Matoeil

+1

應用程序聯機,每次實際上意味着相同。每次啓動應用程序時,首先需要獲取推送註冊ID,並且必須將其發送到服務器,以使服務器更新爲最新推送註冊ID,如前所述。 –

+1

好的謝謝。我不明白什麼時候完全註冊ID更新,但感謝你我明白你需要保持服務器和應用程序之間的雙向溝通​​ – Matoeil

0

嘗試使用此插件「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();">