iPhone 版本 - 5.1 (9B176)
以下是本地通知期间的一系列事件,其中didFinishLaunchingWithOptions
方法未被调用。
- 应用程序正在后台运行。
- 收到本地通知 - 简单通知,无对话框。
- 单击显示徽章编号的应用程序图标。
预计按照苹果文档 http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/IPhoneOSClientImp/IPhoneOSClientImp.html:
作为呈现通知的结果,用户点击警报的操作按钮或点击(或单击)应用程序图标。
如果点击操作按钮(在运行 iOS 的设备上),系统将启动应用程序,并且应用程序会调用其委托的didFinishLaunchingWithOptions
方法(如果实施);它传入通知负载(对于远程通知)或本地通知对象(对于本地通知)。
如果在运行 iOS 的设备上点击应用程序图标,应用程序将调用相同的方法,但不提供有关通知的信息
实际的 :didFinishLaunchingWithOptions
未调用. But applicationWillEnterForeground
and applicationDidBecomeActive
被调用。
你是对的。该行为与文档不一致。把文档放在一边,关注实际行为;问题的关键似乎是这样的:如果您的应用程序通过用户与通知交互而变得活跃,您将收到一个指向通知的指针,如果用户直接点击您的应用程序图标,您将不会收到。
为了显示。如果您呈现警报样式通知并且用户点击操作按钮,或者如您的情况,如果您呈现横幅通知并且用户点击该通知,您将通过以下两种方式之一收到指向该通知的指针:
如果您的应用程序处于未运行状态:
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
UILocalNotification *launchNote = [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];
if (launchNote){
// I recieved a notification while not running
}
}
如果您的应用程序在任何状态下运行:
-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification{
// I recieved a notification
}
如果用户选择取消警报样式通知,该通知就会消失。
真正令人烦恼的不一致部分是,如果您呈现横幅通知并且用户点击您的图标,您似乎无法检索对通知中心中呈现的通知的引用。即它们没有出现在[[UIApplication sharedApplication] scheduledLocalNotifications]
数组,大概是因为它们不再被安排但现在被呈现。
简而言之;文档是错误的。还有其他令人烦恼的不一致之处。如果此行为对您来说是个问题,您应该向 Apple 提交错误。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)