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

`on('notification')` is not triggered on iOS when app is not running

我在我的 ionic3 应用程序上使用 phonegap-plugin-push,我在 iOS 平台上一直遇到这个问题(android 没问题)。当应用程序处于 background/foreground 时,一切都按预期工作。但是,当应用程序不是 运行 时,我会在通知托盘上收到消息,但点击通知或应用程序图标都不会触发 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) 或应用程序图标触发 on('notification') 事件 <-- 这是预期的。假设您的应用刚刚收到 10 条通知。它应该如何知道您打算打开哪个通知?

2) 既不点击通知 <-- 这应该会在您的代码中触发某些内容。你有 didReceiveNotificationResponse implemented? Does that get called? Or does your didFinishLaunching get launched with a remoteNotification 钥匙吗?你的 application(_:didReceiveRemoteNotification:fetchCompletionHandler:) 会被调用吗?