Push notification 订阅后获取OneSignal用户ID

Push notification 订阅后获取OneSignal用户ID,push-notification,notifications,onesignal,Push Notification,Notifications,Onesignal,我使用OneSignal获取通知,因此根据文档,我将SDK代码如下所示: <script src="https://cdn.onesignal.com/sdks/OneSignalSDK.js" async></script> <script> var OneSignal = window.OneSignal || []; OneSignal.push(["init", { appId: "myappID", safari_we

我使用OneSignal获取通知,因此根据文档,我将SDK代码如下所示:

<script src="https://cdn.onesignal.com/sdks/OneSignalSDK.js" async></script>
<script>
var OneSignal = window.OneSignal || [];
    OneSignal.push(["init", {
      appId: "myappID",
      safari_web_id: "myID",
      autoRegister: false,
      promptOptions: {
            /* My prompt options */
       },
       welcomeNotification: {
            //my options
       },
       notifyButton: {
        enable: true,
        showCredit: false,
        prenotify: true,
        position: 'bottom-left',
        text: {
            /*My text options */
        },
        colors: { // My custom colors
        }
      }
    }]);

    OneSignal.push(function(){
        OneSignal.showHttpPrompt();

        OneSignal.getUserId().then(function(userId){
            console.log("OneSignal User ID:", userId);
        });
    });
</script>

var OneSignal=window.OneSignal | |[];
OneSignal.push([“init”{
appId:“我的appId”,
safari_web_id:“myID”,
自动注册:错误,
提示:{
/*我的提示选项*/
},
欢迎致电:{
//我的选择
},
通知按钮:{
启用:对,
showCredit:错,
prenotify:是的,
位置:'左下',
正文:{
/*我的文本选项*/
},
颜色:{//我的自定义颜色
}
}
}]);
OneSignal.push(函数(){
OneSignal.showHttpPrompt();
OneSignal.getUserId().then(函数(userId){
log(“OneSignal用户ID:”,userId);
});
});

显示幻灯片提示消息非常有效,但订阅后我需要刷新网站以在控制台中获取用户ID。如何修改此代码函数以在订阅后立即在控制台中获取用户ID?

您需要为订阅更改事件添加侦听器。否则,将在用户接受订阅之前触发getUserId调用。这对我有用:

var OneSignal = window.OneSignal || [];

OneSignal.push(function() {
  OneSignal.on('subscriptionChange', function (isSubscribed) {
    console.log("The user's subscription state is now:",isSubscribed);
      OneSignal.push(function() {
        OneSignal.getUserId(function(userId) {
          console.log("OneSignal User ID:", userId);
        });
      });
    });
  });

  OneSignal.push(["init", {
    appId: "myappID",
    safari_web_id: "myID",
    autoRegister: false,
    promptOptions: {
        /* My prompt options */
    },
    welcomeNotification: {
        //my options
    },
    notifyButton: {
      enable: true,
      showCredit: false,
      prenotify: true,
      position: 'bottom-left',
      text: {
        /*My text options */
     },
     colors: { // My custom colors
     }
   }
}]);