代码之家  ›  专栏  ›  技术社区  ›  NekoLopez

订阅后获取OneSignal用户ID

  •  1
  • NekoLopez  · 技术社区  · 7 年前

    我使用OneSignal获取通知,因此根据文档,我将我的SDK代码如下所示:

    <script src="https://cdn.onesignal.com/sdks/OneSignalSDK.js" async></script>
    <script>
    var OneSignal = window.OneSignal || [];
        OneSignal.push(["init", {
          appId: "myappID",
          safari_web_id: "myID",
          autoRegister: false,
          promptOptions: {
                /* My prompt options */
           },
           welcomeNotification: {
                //my options
           },
           notifyButton: {
            enable: true,
            showCredit: false,
            prenotify: true,
            position: 'bottom-left',
            text: {
                /*My text options */
            },
            colors: { // My custom colors
            }
          }
        }]);
    
        OneSignal.push(function(){
            OneSignal.showHttpPrompt();
    
            OneSignal.getUserId().then(function(userId){
                console.log("OneSignal User ID:", userId);
            });
        });
    </script>
    

    1 回复  |  直到 7 年前
        1
  •  2
  •   Alejandro Marti    7 年前

    您需要为订阅更改事件添加侦听器。否则,在用户接受订阅之前,将触发getUserId调用。这对我来说很有效:

    var OneSignal = window.OneSignal || [];
    
    OneSignal.push(function() {
      OneSignal.on('subscriptionChange', function (isSubscribed) {
        console.log("The user's subscription state is now:",isSubscribed);
          OneSignal.push(function() {
            OneSignal.getUserId(function(userId) {
              console.log("OneSignal User ID:", userId);
            });
          });
        });
      });
    
      OneSignal.push(["init", {
        appId: "myappID",
        safari_web_id: "myID",
        autoRegister: false,
        promptOptions: {
            /* My prompt options */
        },
        welcomeNotification: {
            //my options
        },
        notifyButton: {
          enable: true,
          showCredit: false,
          prenotify: true,
          position: 'bottom-left',
          text: {
            /*My text options */
         },
         colors: { // My custom colors
         }
       }
    }]);