如何获取 OneSignal playerID

How to get the OneSignal playerID

当用户在启动应用程序时接受通知时,我需要存储 playerID。这是 app.component.ts.

中的 initializeApp 函数

我可以获得playerID(我可以用console.log显示它)但是当我尝试将它设置为本地存储时,它不起作用。这是我的 app.component.ts:

initializeApp() {
    if (this.platform.ready()) {
      this.platform.ready().then((res) => {
        console.log(res);
        if (res == 'cordova') {
                this.oneSignal.startInit('xxx-xxx-xxx', 'xxx');
                this.oneSignal.inFocusDisplaying(this.oneSignal.OSInFocusDisplayOption.InAppAlert);
                this.oneSignal.getIds().then((ids) => {
                  this.nativeStorage.setItem('playerID', ids.userId);
                });
                this.oneSignal.handleNotificationReceived().subscribe((message) => {
                    // do something when notification is received
               
                });
                this.oneSignal.handleNotificationOpened().subscribe(() => {
                    // do something when a notification is opened
                });

                this.oneSignal.endInit();
                
          // console.log(this.oneSignal.startInit('b8320a40-f565-4593-b9aa-d98b580bf8e1', '323509745034'));
          // this.oneSignal.getIds().then(response=>{
          //   console.log(response);
          //     });
          // this.oneSignal.inFocusDisplaying(this.oneSignal.OSInFocusDisplayOption.InAppAlert);
          // this.oneSignal.handleNotificationReceived().subscribe(() => {
          // });
          // this.oneSignal.handleNotificationOpened().subscribe(() => {
          // });
          // this.oneSignal.endInit();
        }
      });
    }
  }

平台就绪时初始化OneSignal 初始化完成后,您可以获取设备ID:

    import { Platform, } from 'ionic-angular'; // Import Platform
        
    onseSignalAppId: string = 'xxx-xxx-xxx-xxx-xx-x-x-xxx';
    googleProjectId: string = 'xxxxxxxx';
    
    constructor(platform: Platform) {
    }
    
    platform.ready().then(() => {
              // Okay, so the platform is ready and our plugins are available.
              // Here you can do any higher level native things you might need.
     statusBar.styleDefault();
     splashScreen.hide();
        
    if (this.platform.is('cordova')) {
    
      if (this.platform.is('android')) {
        this.oneSignal.startInit('onseSignalAppId', 'googleProjectId');
      }
      if (this.platform.is('ios')) {
        this.oneSignal.startInit('onseSignalAppId');
      }
    this.oneSignal.inFocusDisplaying(this.oneSignal.OSInFocusDisplayOption.Notification);

    this.oneSignal.handleNotificationReceived().subscribe(() => {
        // do something when notification is received
      });
    this.oneSignal.handleNotificationOpened().subscribe(result => {
        // do something when a notification is opened
      });
            
      this.oneSignal.endInit();
      
     // Then You Can Get Devices ID

       this.oneSignal.getIds().then(identity => {
           alert(identity.pushToken + " It's Push Token);
           alert(identity.userId + " It's Devices ID");
         });
                       
      });

看到了Documentation