2017-06-16 49 views
0

我使用以下代碼,它會生成一個player-id,但不會在oneignal服務器上創建id作爲訂閱者。我該如何解決它?onesignal在點擊訂閱按鈕後沒有在oneignal服務器上註冊playerid

我附上代碼和錯誤。

錯誤:

PUT https://onesignal.com/api/v1/players/123232-33-44345-1234c-712312 400() 
index.html:89 Uncaught (in promise) ReferenceError: OneSignalUserSubscription is not defined 
    at index.html:89 
    at <anonymous> 

代碼:

<!DOCTYPE html> 
<html> 
<meta content="text/html;charset=utf-8" http-equiv="Content-Type"> 
<meta content="utf-8" http-equiv="encoding"> 

<head> 
    <link rel="manifest" href="/manifest.json"> 


</head> 


<body> 

<script src="https://cdn.onesignal.com/sdks/OneSignalSDK.js" async></script> 
<script> 
    var useragentid = null; 
    var OneSignal = window.OneSignal || []; 
    OneSignal.push(["init", { 
     appId: "APP-ID", 
     autoRegister: false, 
     notifyButton: { 
      enable: false 
     }, 
     persistNotification: false 
    }]); 
    //Firstly this will check user id 
    OneSignal.push(function() { 
     OneSignal.getUserId().then(function(userId) { 
      if(userId == null){ 
       document.getElementById('unsubscribe').style.display = 'none'; 
      } 
      else{ 
       useragentid = userId; 
       document.getElementById('unsubscribe').style.display = ''; 
       OneSignal.push(["getNotificationPermission", function(permission){ 
       }]); 
       OneSignal.isPushNotificationsEnabled(function(isEnabled) { 
        if (isEnabled){ 
         document.getElementById('unsubscribe').style.display = ''; 
         document.getElementById('subscribe').style.display = 'none'; 
        } 
        else{ 
         document.getElementById('unsubscribe').style.display = 'none'; 
         document.getElementById('subscribe').style.display = ''; 
        } 
       }); 
      } 
     }); 
    }); 
    //Secondly this will check when subscription changed 
    OneSignal.push(function() { 
     OneSignal.on('subscriptionChange', function (isSubscribed) { 
      if(isSubscribed==true){ 
       OneSignal.getUserId().then(function(userId) { 
        useragentid = userId; 
       }).then(function(){ 

        console.log(useragentid); 
        // this is custom function 
        // here you can send post request to php file as well. 
        OneSignalUserSubscription(useragentid); 
       }); 
       document.getElementById('unsubscribe').style.display = ''; 
       document.getElementById('subscribe').style.display = 'none'; 
      } 
      else if(isSubscribed==false){ 
       OneSignal.getUserId().then(function(userId) { 
        useragentid = userId; 
       }); 
       document.getElementById('unsubscribe').style.display = 'none'; 
       document.getElementById('subscribe').style.display = ''; 
      } 
      else{ 
       console.log('Unable to process the request'); 
      } 
     }); 
    }); 
    function subscribeOneSignal(){ 
     if(useragentid !=null){ 
      OneSignal.setSubscription(true); 
     } 
     else{ 
      OneSignal.registerForPushNotifications({ 
       modalPrompt: true 
      }); 
     } 
    } 
    function unSubscribeOneSignal(){ 
     OneSignal.setSubscription(false); 
    } 
</script> 
<div id="home-top" class="clearfix"> 
    <p>OneSingle Testing</p> 
    <br> 
    <button id="subscribe" class="button" onclick="subscribeOneSignal()">Subscribe </button> 
    <button id="unsubscribe" class="button" onclick="unSubscribeOneSignal()">Unsubscribe </button> 
</div> 
<style> 
    .button { 
     background-color: #008CBA;border: none;color: white;padding: 15px 32px;text-align: center;text-decoration: none;display: inline-block;font-size: 16px;cursor: pointer; 
    } 
</style> 


</body> 
</html> 

回答

0

您應該使用瀏覽器控制檯看到響應主體是在400錯誤響應什麼。這應該解釋導致400錯誤的原因。

另外,您正在調用一個名爲OneSignalUserSubscription的函數,但是此函數未在您的代碼中定義,這就是您獲取ReferenceError的原因。

+0

OneSignalUserSubscription函數是https://cdn.onesignal.com/sdks/OneSignalSDK.js的一部分 – jason

相關問題