iOS UILocalNotification - 当应用程序在后台运行并且在通知时单击图标时,不会触发委托方法

2024-04-25

iPhone 版本 - 5.1 (9B176)

以下是本地通知期间的一系列事件,其中didFinishLaunchingWithOptions方法未被调用。

  1. 应用程序正在后台运行。
  2. 收到本地通知 - 简单通知,无对话框。
  3. 单击显示徽章编号的应用程序图标。

预计按照苹果文档 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(使用前将#替换为@)

iOS UILocalNotification - 当应用程序在后台运行并且在通知时单击图标时,不会触发委托方法 的相关文章

  • UITextView突出显示的文本颜色或类似的选项?

    我有一个习惯UITableViewCell with a UILabel and a UITextView in it 我希望当用户突出显示时 这两个文本都显示为白色UITableViewCell 显然设置起来非常简单highlighted
  • 观察 CALayer 中的动画属性变化

    我有一个CABasicAnimation动画 a 的属性CALayer e g bounds origin 我希望能够观察属性随时间的变化 但还没有真正找到一种 100 有效的方法 我尝试使用 KVO 键值观察 presentationLa
  • 在 iOS8 中使用 UISearchBar 启用取消按钮

    有什么方法可以启用 UISearchBar 的 取消 按钮吗 现在 每当我致电辞职第一响应者时 取消按钮都会被禁用 仅当我再次点击搜索栏时 取消才会启用 有没有办法停止禁用取消按钮 这是适用于 iOS 8 和 Swift 的可行解决方案 f
  • 处理 UIPageControl 有太多点而无法全部显示在屏幕上的最佳方法是什么

    我的应用程序中有一个 UIPageControl 大约有 10 个页面 点 看起来非常完美 但是用户可以添加许多不同的视图 因此点的数量可能会变成 30 个 发生这种情况时 点就会从屏幕边缘消失 并且您始终无法看到当前选定的页面 这一切看起
  • 从多个视图控制器使用自定义 UIView

    我创建了一个自定义 UIView 我想在 iPhone 应用程序中的多个不同视图控制器上使用它 目前 我已从第一个视图控制器的 nib 文件中复制了包含控件的 UIView 将其粘贴到其他视图控制器中 然后将所有操作连接到每个视图控制器 这
  • 来自 facebook 的高分辨率图像

    这就是我获取相册和相册中的图片的方式 let connectionPhotos FBSDKGraphRequestConnection let requestPhotos FBSDKGraphRequest graphPath String
  • 如何在目标c中获取当前位置的纬度和经度

    我使用以下代码来获取当前位置 我添加了 corelocation 框架 void viewDidLoad super viewDidLoad locationManager CLLocationManager alloc init loca
  • iPhone - 让 VoiceOver 宣布标签文本更改

    如果标签上的文本发生更改 是否可以使用 iPhone 上的 VoiceOver 来宣布更新后的文本 这类似于 ARIA 中的实时区域 Thanks 您可以使用 VoiceOver 朗读您喜欢的任何文本 UIAccessibilityPost
  • 自定义 UIAlertView?

    鉴于蓝色与我的 UI 界面不相配 我只是想知道是否有办法更改 uialertview 的颜色 或者使用图像代替 所有按钮 关闭 等仍然存在 Thanks CodeCropper 的优秀人员刚刚推出了一个开源控件 可让您创建自定义警报视图 这
  • 我的程序有内存泄漏

    IBAction play2 CFBundleRef mainBundle CFBundleGetMainBundle CFURLRef soundFileURLRef soundFileURLRef CFBundleCopyResourc
  • Jquery - 限制文本输入中的文本,而不是文本区域

    使用 jquery 如何限制可以在文本字段中输入的字符数 不是指文本区域 只是一个普通的文本输入字段 我有一个表单 并通过 iPad 使用 IOS5 进行查看 由于某种原因 maxlength 属性被忽略 如果我使用 maxlength 1
  • 如何将 YouTube API 集成到我的 iPhone 应用程序中?

    我想将 YouTube API 集成到我的应用程序中 我该怎么做 附注 我正在为 YouTube 频道制作一个应用程序 我尝试以webview 但这让一切变得更糟 因为用户可以看到 YouTube 控件 搜索等 以及有关 YouTube i
  • 如何跳过压缩一张 PNG?

    注意 我已经解决了这个问题 但花了很长时间才在这里发布问题 答案 Xcode 构建过程在构建时 优化 我的 PNG 这通常不是问题 但以这种方式处理的 iTunesArtwork 会导致其损坏 以致 iTunes 无法显示它 我怎样才能防止
  • iPhone 4 iOS 5 电池电量监控我需要将 setBatteryMonitoringEnabled:NO 添加到定期电池检查吗?

    我正在运行一个应用程序 可以在一夜之间对加速度计和陀螺仪数据进行采样 这是一个非常耗电的操作 我想教我的应用程序识别电池何时变低 这是我的原型代码 每 10 分钟检查一次电池电量 NSDate date NSDate date if int
  • 如何从我的应用程序打开“设置”应用程序? [复制]

    这个问题在这里已经有答案了 在我正在开发的 iPhone 应用程序中 用户需要通过设置应用程序输入一些配置 然后我的应用程序才能连接到服务器并运行 现在 当用户首次启动我的应用程序时 我会显示一条警报 解释用户应该转到设置 输入配置详细信息
  • 推迟 viewWillAppear 直到 webViewDidFinishLoad

    我有一个使用的应用程序UIWebViews在几个视图控制器中 这UIWebViews用于渲染本地生成的html 不需要慢速网络访问 为了节省内存 我只根据视图控制器的提示按需加载这些viewWillAppear打回来 并卸载屏幕外实例以响应
  • UISlider 可捕捉到固定的步数(如 iOS 7 设置应用中的文本大小)

    我正在尝试创建一个UISlider让您可以从一组数字中进行选择 每个滑块位置应等距 并且滑块应卡入每个位置 而不是在它们之间平滑滑动 这是滑块的行为Settings gt General gt Text Size 这是在 iOS 7 中引入
  • 如何正确定向从 AVCaptureVideoDataOutputSampleBufferDelegate 生成的图像

    我在用着AVCaptureVideoDataOutputSampleBufferDelegate我收到一个CMSampleBufferRef我将其转换为UIImage 但生成的图像方向不正确 Get a CMSampleBuffer s C
  • 旋转UIImage自定义角度

    我想以自定义角度旋转 UIImage 不是 UIImageView 我跟着这个帖子 https stackoverflow com questions 917713 uiimage rotation custom degrees但这对我不起
  • 将附件视图按钮添加到 MKMapView 调出注释?

    我最近遇到过这个网站 http www everydayone com 2009 08 mapkit annotation with buttons example 我一直在尝试向我的呼出视图添加一个按钮 来自图像 网站示例上的代码工作得很

随机推荐