iPhone后台应用程序,可在接到电话时更新屏幕



我们正在编写一个iPhone应用程序(将在后台进行(,当来电来电时会收到通知。 该应用程序执行一些后台工作 - 在电话会话正在进行时转到服务器检索一些数据,然后通知用户。

搜索后,我发现我可以使用Private Telephony Headers/Framework来实际知道谁在我的应用程序中打电话。 但是,我无法使用从服务器检索的信息更新拨号器屏幕。 我还发现,当电话到达时,应用程序必须正在运行。牦牛!!

我知道这不会在苹果商店获得批准,但是我正在寻找两件事:

  1. 如何将此应用程序置于后台。
  2. 如何在通话过程中显示一些信息。 本地通知很好,但必须立即显示。

即使我们必须越狱,我也想知道如何完成这项工作。 这个程序是为执法人员 - 概念验证。

正如YllierDev所说,你可以查看MobileSubstrate调整来显示信息。 但是,对于对于新人来说可能不那么令人生畏的事情,您可以尝试以下方法:

  1. 首先,创建一个启动守护进程。 这可以在后台运行并做任何你喜欢的事情。 它将在手机启动时启动,因此用户无需先运行某些应用程序,然后将其放入后台。 我发现这是构建LaunchDaemon的一个很好的例子。

  2. 听起来您已经知道如何使用核心电话框架的未记录功能来接收新呼叫的通知。 这将是您的守护程序的责任。 为了完整起见,请参阅此答案,或有关守护程序如何侦听带有 Darwin 通知的呼叫的其他答案。

  3. 当呼叫被截获时,您的守护程序可以联系您的服务器。

  4. 然后,您可以使用如下所示的内容创建一个简单的弹出窗口:

CFOptionFlags responseFlags = 0;
CFUserNotificationDisplayAlert(20.0, 3, NULL, NULL, NULL, 
     CFSTR("Hello"), CFSTR("Hello World"), CFSTR("OK"), 
     NULL, NULL, &responseFlags);

以下是一些关于CFUserNotifications的Apple文档

您可能需要与 CoreFoundation 框架链接,并可能将此标头包含在您的项目中,以便CFUserNotificationDisplayAlert()可用。

但是,这应该会给您一个包含动态呼叫数据的弹出窗口。

相关内容

最新更新