2017-06-16 2 views
0

Ich benutze den folgenden Code und es generiert eine Spieler-ID, aber erstellt keine ID als Abonnent auf dem Onesignal-Server. Wie kann ich es reparieren?onesignal registriert die playerid auf onesignal server nicht nach dem Klicken auf den subscribe button

Ich füge den Code und den Fehler an.

Fehler:

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> 

Code:

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

Antwort

0

Sie sollten die Browser-Konsole verwenden, um zu sehen, was der Antworttext in der Antwort 400 Fehler. Dies sollte eine Erklärung dafür haben, was den 400 Fehler verursacht.

Unabhängig davon rufen Sie eine Funktion namens OneSignalUserSubscription, aber diese Funktion ist nicht in Ihrem Code definiert, weshalb Sie die ReferenceError erhalten.

+0

OneSignalUserSubscription ist eine Funktion, die ein Teil von https://cdn.onesignal.com/sdks/OneSignalSDK.js ist – jason