2017-09-26 62 views
0

后我使用OneSignal得到通知,所以要根据文档我做我的SDK代码:获取OneSignal用户名认购

<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> 

它的伟大工程幻灯片显示提示信息,但订阅后,我需要刷新网站以在控制台中获取用户ID。如何修改此代码函数以在订阅后立即在控制台中获取用户ID?

回答

1

您需要为订阅更改事件添加侦听器。否则,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 
    } 
    } 
}]);