问题:
- (void) application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
有时在 iOS 7 中不会被调用。
我们如何安排通知并不重要:
alarm.fireDate = [[NSDate date] dateByAddingTimeInterval:0.1];
[app scheduleLocalNotification:alarm];
or:
[app presentLocalNotificationNow:alarm];
我的想法:
当用户在通知警报动画完成之前滑动时会发生这种情况。
如果他在滑动之前只等待半秒 - 通知就会被触发并且应用程序将按预期进行。
问题可能是应用程序在收到通知之前进入前台。
有人遇到过这个吗?这是一个错误吗?有什么解决办法吗?谢谢你!
您的应用程序是在后台还是前台?如果它在前台,我很确定该方法被调用。如果不是,也许您没有将该方法放入应用程序委托中。
如果它在后台,则有以下几种可能的情况:
-
您的应用程序已被用户或操作系统杀死。在这种情况下,当用户通过点击通知中心上的通知(或在锁定屏幕上滑动)来唤醒您的应用程序时,您的应用程序委托将具有application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
方法调用。您可以通过以下方式从此方法获取通知:
[launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];
您的应用程序处于后台,用户点击通知中心或锁定屏幕中的通知。在这种情况下,没有委托方法将被调用。文档特别指出didReceiveLocalNotification:
适用于应用程序位于前台时:
如果应用程序在前台运行,则没有警报、徽章、
或声音;相反,应用程序:didReceiveLocalNotification:方法
如果委托实现它,则调用它。
因此,希望您在收到通知后能够就如何操作做出明智的决定。我个人觉得有点奇怪,当用户通过点击图标(而不是通知)启动应用程序时,我们没有获得通知对象。但我目前只是围绕它写下我的逻辑。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)