从服务中提取数据,并在通知中心显示

时间:2017-02-20 20:31:25

标签: ios objective-c

是否有可能让iOS应用程序从服务中提取数据,比如说www.mysite.com/iphone/notifications,这会产生类似JSON(下面只是一个例子可能是真的):

[
    {
        "Message":"Notification 1",
        "Detail":"Notification 1 detail"
    },
    {
        "Message":"Notification 1",
        "Detail":"Notification 1 detail"
    }   
]

然后,应用程序将继续注册某种后台工作程序并每隔x分钟提取一次通知。

这个概念是否可行,还是我需要通过Apple Push Notification Service

1 个答案:

答案 0 :(得分:0)

您所描述的是Apple所称的"背景提取"。

当iOS调用您的代理performFetchWithCompletionHandler方法时,您的应用会收到通知。然后由您来调用您的服务并使用新信息执行某些操作。您可以在此时创建本地通知。

它没有(公开)定义iOS调用您的委托方法的频率,但它似乎会增加应用程序使用的次数,应用程序完成工作的速度以及是否准确报告是否有新数据是否已下载。

链接到Apple documentation

  

有机会获取少量内容

     

需要定期检查新内容的应用可以要求系统将其唤醒,以便他们可以启动该内容的获取操作。要支持此模式,请从Xcode项目的“功能”选项卡的“后台模式”部分启用“后台获取”选项。 (您还可以通过在应用程序的Info.plist文件中包含带有提取值的UIBackgroundModes键来启用此支持。)启用此模式并不能保证系统会随时为您的应用程序执行后台提取。系统必须平衡您的应用程序根据其他应用程序和系统本身的需求获取内容的需求。在评估该信息后,系统会在有良好机会的情况下为应用程序提供时间。

     

当出现好机会时,系统会将应用程序唤醒或启动到后台并调用应用程序委托的应用程序:performFetchWithCompletionHandler:method。如果内容可用,请使用该方法检查新内容并启动下载操作。完成下载新内容后,必须执行提供的完成处理程序块,并传递指示内容是否可用的结果。执行此块会告诉系统它可以将您的应用程序移回暂停状态并评估其耗电量。快速下载少量内容并准确反映其内容可供下载的应用程序,比将需要很长时间下载内容或声明内容可用的应用程序更有可能在未来获得执行时间不下载任何东西。