Skip to content Skip to sidebar Skip to footer

Onesignal Subscribe User Through Web Page Using Web-push-sdk

Is there a way in one signal web-push-sdk to add user manually and unsubscribe? I tried this in my subscribeOneSignal() function but nothing happening. OneSignal.push(function() {

Solution 1:

Here is solution, It may help someone else.

<scriptsrc="https://cdn.onesignal.com/sdks/OneSignalSDK.js"async></script><script>var useragentid = null;
    varOneSignal = window.OneSignal || [];
    OneSignal.push(["init", {
        appId: "345345-asdf-345",
        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 changedOneSignal.push(function() {
        OneSignal.on('subscriptionChange', function (isSubscribed) {
            if(isSubscribed==true){
                OneSignal.getUserId().then(function(userId) {
                    useragentid = userId;
                }).then(function(){
                 // 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';
            }
            elseif(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');
            }
        });
    });
    functionsubscribeOneSignal(){
        if(useragentid !=null){
            OneSignal.setSubscription(true); 
        }
        else{
            OneSignal.registerForPushNotifications({
                modalPrompt: true
            });
        }
    }
    functionunSubscribeOneSignal(){
        OneSignal.setSubscription(false);
    }
</script><divid="home-top"class="clearfix"><p>OneSingle Testing</p><br><buttonid="subscribe"class="button"onclick="subscribeOneSignal()">Subscribe </button><buttonid="unsubscribe"class="button"onclick="unSubscribeOneSignal()">Unsubscribe </button></div><style>.button {
    background-color: #008CBA;border: none;color: white;padding: 15px32px;text-align: center;text-decoration: none;display: inline-block;font-size: 16px;cursor: pointer;
}
</style>

Solution 2:

Nice, but I have used it, but it want users to be registered after they login to my site with their emailadress as tag:

<?phpif ($_SESSION['sesId']!='')
{
    $sr = mysqli_query($DBD->conn(),"SELECT * from members where id = '".$_SESSION['sesId']."'");
    if ($rr = mysqli_fetch_array($sr))
    {
        if ($rr['pushtag']==1 && $rr['alreadysendpush'] ==0 ) 
        {
        ?>var OneSignal = window.OneSignal || [];
    OneSignal.push(["init", {
      appId: "1c398831-ce91-4a8e-90d8-56cc40b8fa97",
      autoRegister:false,
      showCredit:false,
      disable:false, // betekend geen stanaard bericht als je geaceepteerd hebt notificaties te willen ontvangen
      notifyButton: {
        enable: true/* Set to false to hide */
      },
     safari_web_id: 'web.onesignal.auto.379e9ba9-232a-4433-a939-20e3e6310530'
    }]
    );

                                    OneSignal.push(function() {
                                      /* These examples are all valid */var isPushSupported = OneSignal.isPushNotificationsSupported();
                                      if (isPushSupported) 
                                      {
                                        // Push notifications are supported


                                            OneSignal.isPushNotificationsEnabled().then(function(isEnabled) 
                                            {
                                                if (isEnabled)
                                                {
                                                  console.log("Push notifications are enabled!"); 
                                                    OneSignal.sendTag("email", "<?=$rr['email']?>", function(tagsSent) 
                                                    {
                                                        // Callback called when tags have finished sending                              
                                                        $.ajax({
                                                            type: "POST",
                                                            url: "<?=HTML_ROOT?>inc/webpush.php",
                                                            data: {
                                                                "email": "<?=$rr['email']?>",
                                                                "register": "1",
                                                                "verification":"<?=$rr['verificatie']?>"
                                                            },
                                                            dataType: "html"
                                                        }).done(function(e) {


                                                        });                                                     
                                                    })
                                                }
                                                else {
                                                  console.log("Push notifications are not enabled yet.");      
                                                }
                                              });


                                      } else {
                                        // Push notifications are not supported
                                      }
                                    });
        <?php           
        } else {

        }
    }
}
?>

THis works sometimes with tags and sometimes without tags. How to make it work that i will only register with email

Post a Comment for "Onesignal Subscribe User Through Web Page Using Web-push-sdk"