单击订阅按钮后,onesignal不会在信号服务器上注册playerid

时间:2017-06-16 12:43:16

标签: onesignal

我正在使用以下代码,它会生成一个player-id,但不会在onesignal服务器上创建id作为订阅者。我该如何解决?

我正在附加代码和错误。

错误:

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>

1 个答案:

答案 0 :(得分:0)

您应该使用浏览器控制台查看400错误响应中的响应正文。这应该解释导致400错误的原因。

另外,您正在调用名为OneSignalUserSubscription的函数,但此函数未在您的代码中定义,这就是您获得ReferenceError的原因。