2016-11-10 1 views
3

Gibt es einen Weg in einem Signal Web-Push-SDK Benutzer manuell hinzufügen und abbestellen?OneSignal subscribe Benutzer über Web-Seite mit Web-Push-SDK

Ich versuchte dies in meiner subscribeOneSignal() Funktion, aber nichts passiert.

OneSignal.push(function() { 
    OneSignal.registerForPushNotifications(); 
}); 

habe ich einfache HTML-Seite, wo ich zwei Tasten eine „Abonnieren“ und andere „Abmelden“, jetzt, wenn Benutzer klicken Sie auf die Schaltfläche Abonnieren er an einem Signal hinzufügen sollte, und wenn er angeklickt Schaltfläche „Abmelden“ Er sollte die Benachrichtigungen nicht erhalten.

<!DOCTYPE html> 
<html> 
<head> 
    <link rel="manifest" href="/manifest.json"> 
    <script src="https://cdn.onesignal.com/sdks/OneSignalSDK.js" async></script> 
    <script> 
     var OneSignal = window.OneSignal || []; 
     OneSignal.push(["init", { 
      appId: "345345-asdf-345", 
      autoRegister: false, 
      notifyButton: { 
       enable: true 
      } 
     }]); 

     function subscribeOneSignal(){ 
      OneSignal.push(function() { 
       OneSignal.registerForPushNotifications(); 
      }); 
      OneSignal.push(function() { 
       OneSignal.registerForPushNotifications({ 
       modalPrompt: true 
       }); 
      }); 
     } 
     function unSubscribeOneSignal(){ 
      //unsubscribe functionality goes here 
     } 
    </script> 
</head> 
<body> 
<p>OneSingle Testing</p> 
<br> 
<button onclick="subscribeOneSignal()">Subscribe </button> 
<button onclick="unSubscribeOneSignal()">Unsubscribe </button> 

</body> 
</html> 
+1

Ich weiß nicht mit Onesignal, aber ich habe ein Beispiel für Ihren genauen Anwendungsfall (eine Schaltfläche zum Abonnieren/Abmelden) für Pushpad geschrieben: siehe [die "Schaltfläche" Beispiel] (https://pushpad.xyz/docs/javascript_sdk_examples) – collimarco

Antwort

8

Hier Lösung, es jemand anderem helfen können.

<script src="https://cdn.onesignal.com/sdks/OneSignalSDK.js" async></script> 
<script> 
    var useragentid = null; 
    var OneSignal = 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 changed 
    OneSignal.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'; 
      } 
      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> 
0

Nizza, aber ich habe es verwendet, aber es möchte, dass Benutzer registriert werden, nachdem sie mit ihrem E-Mail adresse als Tag auf meiner Seite anmelden:

<?php 
if ($_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 manchmal funktioniert mit Tags und manchmal ohne Tags. Wie es funktioniert, dass ich nur mit E-Mail registrieren werde

Verwandte Themen