Ionic - OneSignal 在 iOS 13.x 上不起作用

Posted

技术标签:

【中文标题】Ionic - OneSignal 在 iOS 13.x 上不起作用【英文标题】:Ionic - OneSignal doesn't work on iOS 13.x 【发布时间】:2019-11-25 20:09:45 【问题描述】:

我的 ionic 3 应用和 OneSignal 有问题。

该应用在 android 版本和 ios 版本 12.x 上运行良好,但在 iOS 13.* 中没有任何反应。

在 OneSignal 仪表板中查看未注册的设备。我也没有在我的应用程序中获取 playerid(调用 getIds() 方法)。

app.component.ts:

  constructor(platform: Platform, 
              statusBar: StatusBar, 
              private oneSignal: OneSignal,
              public api: ApirestProvider,
              private alertCtrl: AlertController,
              splashScreen: SplashScreen) 
    platform.ready().then(() => 
      statusBar.styleDefault();
      splashScreen.hide();
      this.handlerNotifications();
    );
  

  private handlerNotifications()
    this.oneSignal.startInit('xxxxxxxxxxxxxxxxxxxxxxxxxx', 'xxxxxxxxxxxxx');
    this.oneSignal.inFocusDisplaying(this.oneSignal.OSInFocusDisplayOption.Notification);
    this.oneSignal.handleNotificationOpened()
    .subscribe(jsonData => 
      let alert = this.alertCtrl.create(
        title: jsonData.notification.payload.title,
        subTitle: jsonData.notification.payload.body,
        buttons: ['OK']
      );
      alert.present();
    );

    this.oneSignal.getIds().then(identity => 
      console.log("Player ID:" + identity.userId);
      this.api.player_id=identity.userId;
    ).catch(err => 
      this.api.showMsg("Error en getIds():" + err);
    ); 

    this.oneSignal.endInit();

  

离子信息:

Ionic:

   Ionic CLI          : 5.4.1 (/usr/local/lib/node_modules/ionic)
   Ionic Framework    : ionic-angular 3.9.2
   @ionic/app-scripts : 3.2.1

Cordova:

   Cordova CLI       : 9.0.0 (cordova-lib@9.0.1)
   Cordova Platforms : ios 4.5.5
   Cordova Plugins   : cordova-plugin-ionic-keyboard 2.1.3, cordova-plugin-ionic-webview 2.3.1, (and 14 other plugins)

Utility:

   cordova-res : not installed
   native-run  : not installed

System:

   NodeJS : v10.16.3 (/usr/local/bin/node)
   npm    : 6.9.0
   OS     : macOS Mojave
   Xcode  : Xcode 11.2.1 Build version 11B500

cordova 插件列表:

cordova-open-native-settings 1.5.2 "Native settings"
cordova-plugin-actionsheet 2.3.3 "ActionSheet"
cordova-plugin-advanced-http 2.0.2 "Advanced HTTP plugin"
cordova-plugin-device 2.0.2 "Device"
cordova-plugin-dialogs 2.0.1 "Notification"
cordova-plugin-email-composer 0.9.1 "EmailComposer"
cordova-plugin-file 6.0.1 "File"
cordova-plugin-geolocation 4.0.1 "Geolocation"
cordova-plugin-googlemaps 2.4.6 "cordova-plugin-googlemaps"
cordova-plugin-ionic-keyboard 2.1.3 "cordova-plugin-ionic-keyboard"
cordova-plugin-ionic-webview 2.3.1 "cordova-plugin-ionic-webview"
cordova-plugin-network-information 2.0.2 "Network Information"
cordova-plugin-splashscreen 5.0.2 "Splashscreen"
cordova-plugin-statusbar 2.4.2 "StatusBar"
cordova-plugin-whitelist 1.3.3 "Whitelist"
mx.ferreyra.callnumber 0.0.2 "Cordova Call Number Plugin"
onesignal-cordova-plugin 2.4.6 "OneSignal Push Notifications"

在 XCODE iPhone 模拟器(目标 iOS 13.2.2 / iPhone 11)上运行项目工作正常,进行订阅并获取玩家 ID。

它只是在 iPhone 13.x 真实设备上不起作用。

有什么建议吗?

最佳 Rgs

【问题讨论】:

我在没有 Cordova 的情况下将 Ionic 5 与电容器一起使用,到目前为止它的工作原理是设备在 onesignal 处注册,但出现错误“Apns Delegate Never Fired”。您找到解决问题的方法了吗? 【参考方案1】:

使用 2.6.0 或更高版本更新您的 onesignal 插件,然后它在 ios 13 中工作正常。

【讨论】:

以上是关于Ionic - OneSignal 在 iOS 13.x 上不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Ionic 3 与 OneSignal 不兼容吗?

ionic2 - 用户订阅 OneSignal 后如何获取玩家 ID

如何在通知 ionic 3 onesignal 中使用自定义声音?

如何使用带有 onesignal 的通知徽章?

将OneSignal插件添加到Ionic App后生成APK时出错

Onesignal,Ionic App:单击通知时打开特定视图不起作用