【发布时间】:2013-08-12 11:10:04
【问题描述】:
根据苹果文档,我们可以通过检查应用程序状态变量是否处于非活动状态(link)来识别用户对通知的点击。
iOS 注意:在iOS中,你可以判断一个应用程序是否启动 由于用户点击操作按钮或是否 通知已通过以下方式发送到已运行的应用程序 检查应用程序状态。在委托的实现中 应用程序:didReceiveRemoteNotification:或 application:didReceiveLocalNotification: 方法,获取的值 applicationState 属性并对其进行评估。如果值为 UIApplicationStateInactive,用户点击了动作按钮;如果 值为 UIApplicationStateActive,应用程序在最前面的时候 它收到了通知。
但是我可以看到一个用例,其中有一个系统警报(通过系统警报,我的意思是在由 iOS 控制的应用程序的前台显示一个警报视图)并且应用程序处于非活动状态(当显示“系统警报”,iOS 通过将应用程序的application state 设置为 UIApplicationStateInactive 使后面的应用程序处于非活动状态),但用户仍然可以在屏幕上看到应用程序的内容。参考以下附件:
在这种状态下,如果应用收到通知,它的行为就像用户点击了通知一样。有解决此用例的解决方案吗?
【问题讨论】:
-
相当混乱。 “前台的系统警报和应用程序处于非活动状态”到底是什么意思?
-
@HinataHyuga 在屏幕截图中,我有一个系统警报示例(gmail 应用程序上的通知警报),它由 iOS 而不是背后的应用程序控制。此时iOS将后面的应用视为处于非活动状态(应用的应用程序状态将设置为非活动)。
-
每次收到通知时都会调用
application:didReceiveLocalNotification:方法。 -
是的@iPatel。但理想情况下应该是检查用户是否点击通知的条件。
-
您想在应用程序处于活动状态或非活动状态时处理通知?
标签: ios cocoa-touch apple-push-notifications