【问题标题】:Schedule iOS background task for iCloud and UILocalNotification updates为 iCloud 和 UILocalNotification 更新安排 iOS 后台任务
【发布时间】:2013-11-08 14:00:17
【问题描述】:

我希望在我的应用中实现通知。该应用通过 iCloud 共享数据,通知保存在 iCloud 共享数据中。 (这是一个鞋盒应用。)

很遗憾,我没有资源来支持推送通知。

根据本文档:

https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/WhatAreRemoteNotif.html#//apple_ref/doc/uid/TP40008194-CH102-SW1

在 OS X 中,用于非运行应用程序的唯一推送通知类型是图标标记。

还是这样吗?如果是这样,那没关系 - 我的运行 Mac 应用程序已经能够 (1) 检测 iCloud 更改,(2) 确定是否是新的本地通知需要调度或现有通知需要更新,以及 (3) 调度它们。所以无论如何添加推送支持都不是我想要的。

但是 - 我想知道如何从 iOS 方面解决这个问题。如果我在我的 Mac 上安排通知,并将其保存到 iCloud,我的应用程序在 iOS 上如何在后台接收通知?

如果 iOS 应用程序在前台,我可以确认一切正常。收到 iCloud 通知,加载数据,重新安排通知。

但是如果我的应用程序在后台,或者根本没有运行,那么最好的处理方法是什么?我知道后一种情况是我最有可能零控制的情况。但如果应用程序在后台,我是否:

  1. 需要生成后台任务来定期检查数据更改吗?或者,

  2. 是否有我可以订阅的通知仅在 iCloud 数据发生更改时通知我?

我找到了 UIBackgroundModesfetch 值,但我不确定这是否正是我想要的 - 我没有进行获取,我只是想在后台回复iCloud 发生变化。

【问题讨论】:

  • 什么是鞋盒应用?
  • 我认为他的意思是“沙盒”。
  • 不,我的意思是鞋盒——它只是一个不基于文档的应用程序,而是数据存储在内部。 (在我的例子中,单个数据库文件。)想想 iPhoto 库或日历。你打开应用程序,你的东西就在那里。这里也提到了:developer.apple.com/library/mac/documentation/General/…

标签: ios iphone objective-c cocoa uilocalnotification


【解决方案1】:

您的选择有限。如果您负担不起远程通知,我认为后台获取实际上是一个不错的选择。通过后台获取,您的应用将以相对恒定的时间间隔被唤醒,并且能够检查是否有新的通知要显示给用户(或已删除的通知等)。然后您将能够更新本地通知以匹配。

【讨论】:

    【解决方案2】:

    AFIK 没有一种很好的方法可以满足您的要求。 Background Fetch 可能是一种获取您想要的东西的方法,但它不会让您真正控制它执行的时间和频率。

    正确使用的机制是远程通知。

    我了解您“没有资源来支持推送通知”。您是否可以考虑提供免费套餐并支持推送通知的 BaaS 提供商? ParseStackMob 都提供这个,我相信。

    【讨论】:

      猜你喜欢
      • 2020-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-26
      • 2017-10-01
      • 1970-01-01
      相关资源
      最近更新 更多