2017-09-26 7 views
0

가입 오기 때문에 문서에 따르면이 같은 내 SDK 코드 제작 :OneSignal 사용자 ID 후 내가 알림을받을 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> 

그것은 훌륭한 작품을 보여주는 프롬프트 메시지를 슬라이드 쇼,하지만 가입 후 내가 필요 웹 사이트를 새로 고침하여 콘솔에서 UserID를 가져옵니다. 구독 한 후 바로이 코드 기능을 수정하여 콘솔에서 userID를 얻으려면 어떻게해야합니까?

답변

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 
    } 
    } 
}]);