收到电话时更新屏幕的iPhone后台应用程序

时间:2012-05-17 02:33:23

标签: iphone ios ios5 jailbreak core-telephony

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

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

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

  1. 如何将此应用程序置于后台。
  2. 如何在通话过程中显示一些信息。本地通知很好,但必须立即显示。
  3. 即使我们必须越狱,我也想知道如何完成这项工作。这个应用程序是为执法官员 - 概念证明。

1 个答案:

答案 0 :(得分:3)

正如YllierDev所说,您可以查看MobileSubstrate调整以显示信息。但是,对于那些可能对某些新人来说不那么令人生畏的东西,你可以试试这个:

  1. 首先,创建一个启动守护程序。这可以在后台运行并做任何你喜欢的事情。它将在手机启动时启动,因此用户无需先运行某个应用程序,然后将其置于后台。我找到了this to be a good example of building a LaunchDaemon

  2. 听起来您已经知道如何使用Core Telephony框架的未记录功能来获得新呼叫的通知。这将是你的守护进程的责任。为了完整性,see this answerthis other answer了解守护程序如何使用达尔文通知侦听呼叫。

  3. 当拦截电话时,您的守护程序可以与您的服务器联系。

  4. 然后,您可以使用something like this创建一个简单的弹出窗口:

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

    这是一些Apple docs on CFUserNotifications

    您可能需要与 CoreFoundation 框架相关联,并且可能需要include this header项目中的{{3}},以便CFUserNotificationDisplayAlert()可用。

    但是,这应该会为您提供动态调用数据的弹出窗口。