首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Phonegap-Pushplugin:在iOS中处理通知上的单击事件

Phonegap-Pushplugin:在iOS中处理通知上的单击事件
EN

Stack Overflow用户
提问于 2017-09-20 06:06:10
回答 1查看 1.3K关注 0票数 0

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

代码语言:javascript
复制
pushObject.on('notification').subscribe((notification: any) => {

在应用程序处于前台时,通知一到达就会被触发。客户端代码如下:

代码语言:javascript
复制
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));

服务器端有效载荷示例:

代码语言:javascript
复制
{
    "aps": {
        "alert": "Testing.. (15)",
        "badge": 1,
        "sound": "default",
        "content-available": 1
    }
}

对问题的解释:在收到通知后应用程序处于前台时的

代码语言:javascript
复制
pushObject.on('notification').subscribe((notification: any) => {

该方法正在被调用。它不是等待用户点击notification.In我的应用程序,我将导航到特定的页面,这取决于通知中的有效负载数据。

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

我希望用户单击通知,然后再单击通知。

代码语言:javascript
复制
pushObject.on('notification').subscribe((notification: any) => {

方法应该被触发。提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2017-11-23 00:32:41

您可以检查通知有效负载上的.additionalData.foreground属性,并且只有当值为false时才触发app中的行为。当用户单击通知时,您的应用程序将被带到前台。此属性是关于在设备上收到通知时应用程序是否位于前台。

如果您的应用程序在设备上收到通知时位于前台,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,这意味着您可以依赖它来区分单击或未单击的通知。

我还不确定如何区分这些情况(如何知道用户是否实际单击了通知)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46314420

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档