5

我希望在我的应用程序中实现通知。该应用程序通过 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 数据发生更改时才会通知我?

我找到了 的fetchUIBackgroundModes,但我不确定这是否是我想要的——我没有进行获取,我只是想在后台响应 iCloud 更改。

4

2 回答 2

4

Your options are limited. I think background fetch is actually a good alternative if you cannot afford remote notifications. With background fetch, your app will be woken up in relatively constant intervals and will be able to check if there are new notifications to display to the user (or notifications that have been removed, etc). Then you will be able to update the local notifications to match.

于 2013-11-15T11:55:24.930 回答
1

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

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

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

于 2013-11-19T23:32:14.073 回答