我正在尝试确定UIApplication didReceiveLocalNotification:
的不同情景。如果用户点击通知时应用程序处于非活动状态,我应该将它们带到相应的UI页面。否则,如果用户刚刚打开应用而未点击通知,我应该让他们留在他们离开的用户界面页面。
然而,由于UILocalNotification
由我自己安排,因此存在一些问题。
[[UIApplication sharedApplication] scheduleLocalNotification:scheduledAlert];
所以每当它被iOS触发时,当我手动点击状态栏上的通知时,它将调用与回调相同的委托方法:
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification { ... }
我尝试了一些棘手的黑客攻击,例如在app处于非活动模式时计算已触发的时间,计数1表示iOS触发,计数2表示用户单击,以及相对计数管理代码。
但我不认为这可能是最好的做法。我检查了iOS Messages应用程序,它具有相同的功能。如果您将应用程序置于非活动模式,例如向下滚动状态栏,则可以确定UILocalNotification
来自您的触摸(并将打开文本编辑模式),或者只是您返回应用程序(停留)在以前的状态)。
如果你们能告诉我这里最好的解决方案,我将不胜感激!
答案 0 :(得分:0)
我使用自定义键值对,我设置了一个NSMutableDictionary,然后我将其分配给UILocalNotification.userInfo,以告诉不同的场景。
答案 1 :(得分:-1)
我检查应用状态,以便我只处理通知,如果我来自后台:
UIApplicationState state = [application applicationState];
if (state == UIApplicationStateInactive) {
// Your Code Here
} else {
}