javascript – OneSignal使用web-push-sdk通过网页订阅用户

前端之家收集整理的这篇文章主要介绍了javascript – OneSignal使用web-push-sdk通过网页订阅用户前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有没有办法在一个信号web-push-sdk手动添加用户和取消订阅

我在subscribeOneSignal()函数中尝试了这个,但没有发生任何事情.

  1. OneSignal.push(function() {
  2. OneSignal.registerForPushNotifications();
  3. });

我有简单的html页面,其中有两个按钮,一个是“订阅”,另一个是“取消订阅”,现在当用户点击“订阅”按钮时,他应该添加一个信号,当他点击“取消订阅”按钮时,他不应该收到通知.

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <link rel="manifest" href="/manifest.json">
  5. <script src="https://cdn.onesignal.com/sdks/OneSignalSDK.js" async></script>
  6. <script>
  7. var OneSignal = window.OneSignal || [];
  8. OneSignal.push(["init",{
  9. appId: "345345-asdf-345",autoRegister: false,notifyButton: {
  10. enable: true
  11. }
  12. }]);
  13.  
  14. function subscribeOneSignal(){
  15. OneSignal.push(function() {
  16. OneSignal.registerForPushNotifications();
  17. });
  18. OneSignal.push(function() {
  19. OneSignal.registerForPushNotifications({
  20. modalPrompt: true
  21. });
  22. });
  23. }
  24. function unSubscribeOneSignal(){
  25. //unsubscribe functionality goes here
  26. }
  27. </script>
  28. </head>
  29. <body>
  30. <p>OneSingle Testing</p>
  31. <br>
  32. <button onclick="subscribeOneSignal()">Subscribe </button>
  33. <button onclick="unSubscribeOneSignal()">Unsubscribe </button>
  34.  
  35. </body>
  36. </html>

解决方法

这是解决方案,它可能会帮助别人.
  1. <script src="https://cdn.onesignal.com/sdks/OneSignalSDK.js" async></script>
  2. <script>
  3. var useragentid = null;
  4. var OneSignal = window.OneSignal || [];
  5. OneSignal.push(["init",{
  6. appId: "345345-asdf-345",notifyButton: {
  7. enable: false
  8. },persistNotification: false
  9. }]);
  10. //Firstly this will check user id
  11. OneSignal.push(function() {
  12. OneSignal.getUserId().then(function(userId) {
  13. if(userId == null){
  14. document.getElementById('unsubscribe').style.display = 'none';
  15. }
  16. else{
  17. useragentid = userId;
  18. document.getElementById('unsubscribe').style.display = '';
  19. OneSignal.push(["getNotificationPermission",function(permission){
  20. }]);
  21. OneSignal.isPushNotificationsEnabled(function(isEnabled) {
  22. if (isEnabled){
  23. document.getElementById('unsubscribe').style.display = '';
  24. document.getElementById('subscribe').style.display = 'none';
  25. }
  26. else{
  27. document.getElementById('unsubscribe').style.display = 'none';
  28. document.getElementById('subscribe').style.display = '';
  29. }
  30. });
  31. }
  32. });
  33. });
  34. //Secondly this will check when subscription changed
  35. OneSignal.push(function() {
  36. OneSignal.on('subscriptionChange',function (isSubscribed) {
  37. if(isSubscribed==true){
  38. OneSignal.getUserId().then(function(userId) {
  39. useragentid = userId;
  40. }).then(function(){
  41. // this is custom function
  42. // here you can send post request to PHP file as well.
  43. OneSignalUserSubscription(useragentid);
  44. });
  45. document.getElementById('unsubscribe').style.display = '';
  46. document.getElementById('subscribe').style.display = 'none';
  47. }
  48. else if(isSubscribed==false){
  49. OneSignal.getUserId().then(function(userId) {
  50. useragentid = userId;
  51. });
  52. document.getElementById('unsubscribe').style.display = 'none';
  53. document.getElementById('subscribe').style.display = '';
  54. }
  55. else{
  56. console.log('Unable to process the request');
  57. }
  58. });
  59. });
  60. function subscribeOneSignal(){
  61. if(useragentid !=null){
  62. OneSignal.setSubscription(true);
  63. }
  64. else{
  65. OneSignal.registerForPushNotifications({
  66. modalPrompt: true
  67. });
  68. }
  69. }
  70. function unSubscribeOneSignal(){
  71. OneSignal.setSubscription(false);
  72. }
  73. </script>
  74. <div id="home-top" class="clearfix">
  75. <p>OneSingle Testing</p>
  76. <br>
  77. <button id="subscribe" class="button" onclick="subscribeOneSignal()">Subscribe </button>
  78. <button id="unsubscribe" class="button" onclick="unSubscribeOneSignal()">Unsubscribe </button>
  79. </div>
  80. <style>
  81. .button {
  82. background-color: #008CBA;border: none;color: white;padding: 15px 32px;text-align: center;text-decoration: none;display: inline-block;font-size: 16px;cursor: pointer;
  83. }
  84. </style>

猜你在找的JavaScript相关文章