2016-11-10 52 views
3

在一個信號web-push-sdk中手動添加用戶並取消訂閱有什麼方法嗎?OneSignal使用web-push-sdk通過網頁訂閱用戶

我在subscribeOneSignal()功能,但沒有發生嘗試這個。

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

我有簡單的HTML頁面,在這裏我有兩個按鈕,一個「訂閱」等是「退訂」,現在當上訂閱按鈕,用戶點擊他應該在一個信號增加,當他點擊「取消」按鈕他不應該收到通知。

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

我不知道onesignal,但我已經爲您的Pushpad的確切用例(訂閱/取消訂閱按鈕)寫了一個示例:請參閱[「按鈕」示例](https://pushpad.xyz/docs/javascript_sdk_examples) – collimarco

回答

8

這裏是解決方案,它可能會幫助別人。

<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

不錯,但我已經用它,但它想後,他們登錄到我的網站與他們的emailadress作爲標籤用戶註冊:

<?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 { 

     } 
    } 
} 
?> 

這個作品有時與標籤和有時沒有標籤。 如何使它工作,我將只使用電子郵件註冊