Sus*_*ish 17 iphone notifications localnotification uilocalnotification ios5
iPhone版 - 5.1(9B176)
下面是本地通知期间的一系列事件,其中didFinishLaunchingWithOptions未调用哪种方法.
根据Apple文档预期:
作为所呈现的通知的结果,用户点击警报的动作按钮或点击(或点击)应用程序图标.如果点击操作按钮(在运行iOS的设备上),系统将启动应用程序,应用程序将调用其委托
didFinishLaunchingWithOptions方法(如果已实现); 它传递通知有效负载(用于远程通知)或本地通知对象(用于本地通知).如果在运行iOS的设备上轻触应用程序图标,则应用程序会调用相同的方法,但不会提供有关通知的信息
实际:未
didFinishLaunchingWithOptions 调用.但applicationWillEnterForeground和applicationDidBecomeActive被调用.
NJo*_*nes 23
你是对的.该行为与文档不一致.将文档放在一边,重点关注实际行为; 问题的症结似乎在于:如果用户通过与通知交互而变为活动状态,您将收到指向通知的指针,如果用户直接点击您的应用程序图标则不会.
为了显示.如果您提出警报样式通知,并且用户点击操作按钮,或者如果您出现横幅通知并且用户点击该按钮,您将通过以下两种方式之一接收指向该通知的指针:
如果您的应用程序处于Not-Running状态:
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
UILocalNotification *launchNote = [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];
if (launchNote){
// I recieved a notification while not running
}
}
Run Code Online (Sandbox Code Playgroud)
如果您的应用程序在任何状态下运行:
-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification{
// I recieved a notification
}
Run Code Online (Sandbox Code Playgroud)
在用户选择取消警报样式通知的情况下,该通知消失.
真正烦人的一个不一致的部分是,如果你提出横幅通知并且用户点击你的图标,你似乎无法在通知中心检索对所呈现的通知的引用.也就是说它们不会出现在[[UIApplication sharedApplication] scheduledLocalNotifications]阵列中,大概是因为它们不再被安排但现在已经出现了.
所以总之; 文档错了.还有其他烦人的不一致.如果此行为对您来说是一个问题,您应该向Apple提交错误.
| 归档时间: |
|
| 查看次数: |
9836 次 |
| 最近记录: |