2017-01-25 3 views
1

私はOnceSignalサービスを利用してウェブサイトの通知にサブスクライブするようにユーザーに尋ねるので、私は:OneSingal - ユーザーが購読した後にPlayerIdを取得する方法私のjavascriptのコードでは

OneSignal.registerForPushNotifications(); 

は、それから私は、次のように加入したユーザのPlayerIdをキャッチしようとしている:

OneSignal.push(function() { 
     OneSignal.on('notificationPermissionChange', function(permissionChange) { 
      var currentPermission = permissionChange.to; 

      if (currentPermission == "granted") { 
       OneSignal.getUserId(function(userId) { 
        console.log(userId); 
       }); 
      } 
     }); 

その後、私はそのuserIdを取得して、それを私のmysqlデータベースに保存して、通知を後で送信することができます。しかし、何らかの理由で、userIdがOneSignal Serverに格納されているPlayerIdと異なっていますが、フォーマットは同じです。 UserIdとPlayerIdは別のものですか?そうであれば、ユーザーがプッシュを購読した後にPlayerIdを取得するにはどうすればよいですか?

答えて

3

ほとんどの場合、古いユーザーIDが表示されています。 notificationPermissionChangeイベントが早すぎてユーザーのIDを取得できません。このイベントは分析のみを目的としており、サブスクリプション後にユーザーのIDを検索する場合は、subscriptionChangeイベントを使用します。

SDKドキュメントのリンク:

+0

https://documentation.onesignal.com/docs/web-push-sdkありがとうございました。彼らはまだ異なっているように見えます。私が置いた場合OneSignal.getUserId(関数(USERID){... \t \t OneSignal.push([ "getNotificationPermission"、機能(パーミッション){または\t \t OneSignal.push(関数内で(){ \t \t OneSignal.on内部( 'subscriptionChange'、function(isSubscribed){...私はコンソールで同じ値を取得します。たとえば、3c4d2ae9-de39-4780-92fb-76667f7681ecですが、サーバー上ではまだ異なります:f2736015-ffca-4cef-bf03 -b5708bdb1504 – user164863

+0

これで、キャッシュから古いUserIdを得ることができます。キャッシュを完全にクリアすると、サーバーからの適切なUserIdが得られます。私はブラウザのキャッシュをクリアすると、そのイベントでUserId = nullとなり、私はsubscriptionChangeイベントで必要なものを取得します。ありがとう – user164863

関連する問題