7

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

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

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

  1. 我如何把这个应用程序放在后台。
  2. 如何在通话进行时显示一些信息。本地通知很好,但必须立即显示。

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

4

1 回答 1

3

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

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

  2. 听起来您已经知道如何使用 Core Telephony 框架的未记录功能来获得新呼叫的通知。这将是您的守护进程的责任。为了完整起见,请参阅此答案或有关守护程序如何使用 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(),以便可用。

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

于 2012-06-09T07:12:59.157 回答