2014-03-26 26 views
8

我为Android编写了应用程序,用于监听传入日历事件,并在后台应用程序中触发我的流程。如何在后台iOS应用程序中收听日历事件?

现在我试着对iOS做同样的事情。

我读了很多东西,并跑了一些演示,使用EKEventStore背景获取

但是,这种方法不满足我。

有没有其他方法可以做到这一点?

[编辑]

应用仅使用公共API。

感谢,

回答

4

一般情况下,后台执行的Android机型并不适用于iOS的。

您可以注册日历事件,如下所示,但您的应用程序只有在运行时才会收到通知。在iOS上,这意味着它可能处于前景中,最近一直在后台运行,或者作为指定背景模式(例如后台获取,位置更新,VoIP等)的一部分被系统启动/唤醒。

[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(receiveEventStoreChangedNotification:) 
              name:EKEventStoreChangedNotification 
              object:eventStore]; 

如果你的应用程序需要指定背景模式中的一种,你至少获得不时通知(当你被唤醒)。我见过批准的应用程序使用位置更新只是为了获得更多的执行时间,当然YMMV。

+0

是的,我想到了位置和“按下主页按钮”事件。 – snaggs

5

简短的回答是你不能。 Apple不会允许任何应用程序在后台执行此类操作,因为它需要在CPU关闭时打开CPU。

当您的应用程序运行时,您可以在不久的将来阅读所有事件(比如说两周之内?)并为事件时间设置“本地”推送通知。此外,如果用户经常启动您的应用程序,Apple会允许您的应用程序使用后台应用程序刷新进行刷新。该设备通常会在用户每次醒来之前的早晨进行此操作,并根据用户的活动在每天的第一天以及全天开启手机。您可以在后台应用程序刷新期间执行任何操作。

作品中的另一个扳手是苹果的全磁盘加密工作原理。如果手机处于锁定状态,那么您的应用程序的功能就不多了。手机上的大部分数据都使用用户的密码加密。直到用户输入密码才能完成。在这种情况下,后台应用程序刷新将在他们输入密码后立即运行,但在他们启动您的应用程序之前。

也许你可以让远程服务器向手机发送推送通知。不知道这是否是您的选择。显然这意味着服务器需要访问用户的日历数据。

相关问题