7

電話の着信時に通知される iPhone アプリ (バックグラウンドで実行される) を作成中です。アプリはいくつかのバックグラウンド作業を行います。電話セッションの進行中にサーバーに移動してデータを取得し、ユーザーに通知します。

検索した結果、 を使用してPrivate Telephony Headers/Framework、自分のアプリで誰が電話をかけているかを実際に知ることができることがわかりました。ただし、サーバーから取得した情報でダイヤラ画面を更新できません。また、電話がかかってきたときにアプリケーションが実行されている必要があることもわかりました。ヤク!!

これがアップルストアで承認されないことはわかっていますが、2つのことを探しています:

  1. このアプリをバックグラウンドに置く方法を教えてください。
  2. 通話中に情報を表示するにはどうすればよいですか。ローカル通知は問題ありませんが、すぐに表示する必要があります。

脱獄しなければならない場合でも、これを行う方法を知りたいです。このアプリは法執行官向けです - 概念の証明。

4

1 に答える 1

3

YllierDev が言ったように、MobileSubstrate の微調整を調べて情報を表示できます。しかし、新しい人にとっては少し気が遠くなるかもしれない何かについては、これを試すことができます:

  1. まず、起動デーモンを作成します。これはバックグラウンドで実行でき、好きなことを行うことができます。電話の起動時に開始されるため、ユーザーは最初にアプリを実行してからバックグラウンドに入れる必要はありません。これは、LaunchDaemon を構築する良い例であることがわかりました。

  2. Core Telephony フレームワークの文書化されていない機能を使用して、新しい通話の通知を受け取る方法を既に知っているようです。これはデーモンの責任になります。完全を期すために、この回答、またはデーモンがダーウィン通知で呼び出しをリッスンする方法に関するこの他の回答を参照してください。

  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 に答える