【问题标题】:Does iOS cache remote notifications for apps that are running in background?iOS 是否会缓存后台运行的应用程序的远程通知?
【发布时间】:2012-03-08 04:45:33
【问题描述】:

来自苹果开发者网络的官方文档提到,推送通知的有效负载是在应用程序在前台运行时提供给应用程序,或者当它因为推送通知而被激活时。我找不到关于应用程序在后台运行时会发生什么的声明。

我用即时消息应用程序进行了测试,发现了一些我不明白的地方。测试程序为:

  1. 为应用启用推送通知
  2. 将应用切换到后台
  3. 向客户端发送两个 IM。两个推送通知到达客户端,应用图标上的徽章变为 2
  4. 关闭蜂窝网络以防止应用与其服务器通信
  5. 点击应用图标切换到前台

完成这些步骤后,我可以在聊天窗口中看到 2 条消息。由于应用程序无法直接从服务器检索消息,唯一的解释是推送通知在应用程序处于后台时由应用程序处理,或者它们被缓存在某处并且可以在应用程序切换到前台时访问。但是 iOS 真的允许应用在后台执行代码,或者为应用缓存通知吗?

【问题讨论】:

    标签: ios background push-notification


    【解决方案1】:

    应用程序将通知缓存 2-5 分钟(我不知道确切的时间)..

    如果您收到通知并在 2-5 分钟内打开应用

    然后在您的应用委托中

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    
    {
    
    }
    

    然后您将拥有通知对象 .. 您可以使用 launchOPtions 对象作为键 UIApplicationLaunchOptionsRemoteNotificationKey 来获取它

    如果2-5分钟内不打开..不会有通知对象,

    这是基于我的经验..不能完全支持这个答案

    【讨论】:

    • 在将应用程序从后台切换到前台之前,我尝试等待长达 1 小时,但 IM 仍然存在。我猜是最近的iOS版本缓存时间变长了,还是iOS还有一些未知的行为?
    • 如果应用程序是VOIP应用程序..那么它可以在后台执行代码..所以如果通知来..那么它在应用程序中执行(并且存储的..只有UI不更新)。 .这就是您的 IM 应用程序的解释.. 我的答案解释是针对普通的推送通知应用程序..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 2015-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-24
    相关资源
    最近更新 更多