【问题标题】:(Ionic) handleNotificationReceived does not get called if the app is killed如果应用程序被杀死,(离子)handleNotificationReceived 不会被调用
【发布时间】:2019-08-19 01:12:59
【问题描述】:

我正在开发一个 ionic 应用程序,我正在使用 onesignal 进行推送通知。

我面临的问题是handleNotifiactionRecieved() 在应用程序未被杀死(即从最近的应用程序中删除)时收到推送通知时不会被触发。虽然它在应用程序运行但在后台(不是 inFocus)时按预期工作。

设置代码是这样的:

if (this.platform.is('cordova')) {
        this.oneSignal.startInit('APP_ID');
        this.oneSignal.inFocusDisplaying(this.oneSignal.OSInFocusDisplayOption.None);
        this.openOneSignalMessage();
        this.oneSignal.endInit();
      }

我的代码是这样的:

openOneSignalMessage() {
this.oneSignal.handleNotificationReceived().subscribe((data) => {
      this.MsgBody = data.payload.body
      console.log('newMessageOneSignal MsgBody', this.MsgBody);
 });
}

实际结果:handleNotificationReceived() 在应用未运行时不会被调用,即被杀死。

预期结果:每次推送通知到达时都应该调用handleNotificationReceived(),即使应用程序未打开也是如此。

如何每次触发方法?

提前致谢。

【问题讨论】:

    标签: ionic-framework ionic2 ionic3 onesignal android-push-notification


    【解决方案1】:

    感谢您在文档中指出问题。它们已更新为正确的信息:

    handleNotificationReceived(构建器方法)

    设置通知接收处理程序。仅当应用在收到通知时在前台中运行时调用。

    如果你想从被杀状​​态处理,请确保使用 handleNotificationOpened method

    【讨论】:

    • 感谢您的回复,但是如果用户没有点击通知并直接打开应用程序并且在打开应用程序时通知本身被关闭了怎么办?然后呢?
    • 不幸的是,在这种情况下,用户必须单击通知才能处理 Saurab
    【解决方案2】:

    我在文档中找到了这个:

    设置通知接收处理程序。仅当应用在收到通知时在前台或后台运行时才调用。

    也许你的应用没有在后台运行。

    或者问题是你需要在 startinit 之后调用你的函数:

    this.onesignal.startInit("YOUR_APPID")
    this.onesignal.handleNotificationReceived() 
    

    【讨论】:

    • 我已经编辑了上面的问题,实际上我错过了用openOneSignalMessage()"{}包围handleNotificationReceived()
    • 正如你所说,我也在做同样的事情。从最近的应用程序中杀死该应用程序后,该应用程序可能没有在后台运行。
    • 我找到了这个解决方案github.com/OneSignal/OneSignal-Cordova-SDK/issues/257希望它能帮到你。
    • 问题是,如果应用程序不在后台运行,您将无法调用handleNotificationReceived()
    • 为什么会这样,我的意思是它应该在后台运行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-01
    相关资源
    最近更新 更多