当应用未运行时,不会在iOS上触发`on('notification')`

时间:2018-06-29 17:25:24

标签: ios ionic3 phonegap-plugin-push

我在ionic3应用程序上使用phonegap-plugin-push,并且在iOS平台上一直遇到此问题(Android可以)。当应用程序在后台/前景运行时,一切正常。但是,当应用程序未运行时,我会在通知托盘上收到消息,但没有点击通知或应用程序图标都不会触发on('notification')事件,它只会运行并忽略传入的通知。

我正在按照文档中的建议在aps json消息中使用{ ... content-available: 1},但是它似乎没有任何作用(尽管它确实对Android有影响),离子应用本身从未即使设备已收到并显示在托盘上,也会获取消息。

下面的我展示了我的配置和发送到推送服务的示例消息。如果有人对如何解决这个问题有任何想法,我将在ios 8.x和ios 11.x上进行测试,它们都表现出相同的行为。

const options: PushOptions = {
    android: {
        senderID: '*************',
        icon: 'ic_stat_ic_notification'
    },
    ios: {
        alert: 'true',
        badge: 'true',
        sound: 'true'
    },
    windows: {}
};

platform.ready().then(() => {
    push.on('registration').subscribe((data: EventResponse) => {
        // register data.registrationId
    });

    push.on('notification').subscribe((data: EventResponse) => {
        alert(data.message)
    });
});

示例消息:

{
    "aps": {
      "alert": "This is a Push",
      "badge": 1,
      "content-available": 1
    },
    "payload": {
      "type": "news"
    }
}

1 个答案:

答案 0 :(得分:1)

这个评论太长了。这更多是间接答案。

1)或应用程序图标触发on('notification')事件 <-是预期的。假设您的应用刚刚收到10条通知。它应该如何知道您打算打开哪个通知?

2)都不要点击通知 <-这会触发代码中的某些内容。您是否已实施didReceiveNotificationResponse?有电话吗?还是使用remoteNotification键启动了didFinishLaunching?那您的application(_:didReceiveRemoteNotification:fetchCompletionHandler:)被称为怎么样?