Phonegap-Pushplugin:处理iOS中通知的点击事件

时间:2017-09-20 06:06:10

标签: ios cordova ionic2 phonegap-pushplugin

预期行为: 单击通知后触发事件。 实际行为:

pushObject.on('notification').subscribe((notification: any) => {

正在被触发 当应用程序在前台时通知到达。   客户端代码如下:

const options: PushOptions = {
ios: {
alert: 'true',
badge: true,
sound: 'false'
},

};

const pushObject: PushObject = this.push.init(options);

pushObject.on('notification').subscribe((notification: any) => console.log('Received a notification', notification));

pushObject.on('registration').subscribe((registration: any) => console.log('Device registered', registration));

pushObject.on('error').subscribe(error => console.error('Error with Push plugin', error));

服务器端有效负载示例:

{
    "aps": {
        "alert": "Testing.. (15)",
        "badge": 1,
        "sound": "default",
        "content-available": 1
    }
}

问题说明:一旦收到通知,应用程序就在前台

pushObject.on('notification').subscribe((notification: any) => {

该方法正在被调用。它不是在等待用户点击通知。在我的应用程序中,我将根据通知中的有效负载数据导航到某个页面。

现在由于这个功能的立即触发,虽然用户位于某个页面的中间,但在收到通知后,他会立即被重定向到某个页面。

我希望用户点击通知,然后才能点击

pushObject.on('notification').subscribe((notification: any) => {
应该触发

方法。提前谢谢。

1 个答案:

答案 0 :(得分:0)

您可以检查通知有效内容上的.additionalData.foreground属性,并仅在值为false时触发应用内行为。当用户点击通知时,您的应用将被带到前台。此属性是关于在设备上收到通知时应用程序是否在前台。

如果您的应用在设备上收到通知时位于前台,则ui通知本身(在系统通知托盘中)将被禁止(在大多数情况下,您可以通过多种方式强制显示通知你的应用程序在前台,但这是一个不同的主题)。

如果您的应用收到通知时此属性为false,则表示您的应用在设备上收到通知时处于后台。当用户点击通知以启动或激活您的应用时就是这种情况,我认为这是普通的'普通'情况下。

以上并未涵盖所有案件;有关确切行为的更多详细信息,请参见https://github.com/phonegap/phonegap-plugin-push/blob/master/docs/PAYLOAD.md#push-message-arrives-with-app-in-foreground

不幸的是,有一种情况在IOS 11中处理不好,即:如果您的应用程序位于前台,但设备在收到通知时处于休眠/关闭状态。在唤醒设备时,您的应用仍处于前台。用户下拉通知列表并点击“旧”按钮。通知。在这种情况下,additionalData.foreground属性将为true。

在IOS 10及更早版本中,此前景属性在最后一种情况下设置为false,这意味着您可以依赖它来区分被点击的通知。

我不确定(还)如何区分案例(如何知道用户是否实际点击了通知)。