2017-06-16 44 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

相关问题