2012-05-17 1 views
7

Мы в процессе написания приложения iPhone (которое будет в фоновом режиме), которое будет уведомлено при поступлении входящего телефонного звонка. Приложение выполняет некоторые фоновые работы - переход на сервер, получающий некоторые данные, в то время как сеанс телефона продолжается, а затем уведомляет пользователя.Приложение для iPhone iPhone для обновления экрана при получении телефонного звонка

После поиска я обнаружил, что могу использовать Private Telephony Headers/Framework, чтобы узнать, кто звонит в моем приложении. Однако я не могу обновить экран дозвона информацией, полученной с сервера. Также я обнаружил, что приложение должно выполняться при поступлении телефонного звонка. Як !!

Я знаю, что это не будет утвержден в яблочном магазине, но я ищу 2 вещи:

  1. Как я кладу это приложение в фоновом режиме.
  2. Как показать некоторую информацию во время разговора. Местное уведомление прекрасное, но оно должно отображаться немедленно.

Даже если нам нужно сделать джейлбрейк, я хотел бы знать, как это сделать. Это приложение предназначено для сотрудников правоохранительных органов - доказательство концепции.

+1

Если вы хотите сделать это приложение надлежащим образом, вам нужно будет сделать джейлбрейк, потому что я считаю, что лучшим решением будет фоновый демон, делающий тяжелую работу, а затем ввод кода в SpringBoard для отображения информации. Нет никаких реальных руководств о том, как делать подобные вещи, однако разработчики, которые находятся на джейлбрейке, имеют опыт в отношении этого вопроса, а иногда и внештатную работу. – YllierDev

+0

Я в основном ищут инъекцию кода в весеннюю доску, чтобы сразу узнать о конфиденциальной информации для сотрудников правоохранительных органов, и они лучше информированы во время разговора. Если Apple сообщит, что предотвращает такие изменения для пользовательского опыта или конфиденциальности/безопасности, я бы сказал, что они не разработали его лучше и не испугались .. и только прячутся за этими оправданиями. –

+0

Если вы хотите попробовать это самостоятельно, MobileSubstrate (http://iphonedevwiki.net/index.php/MobileSubstrate) - это инструмент, который можно использовать для инъекций кода на устройствах с джейлбрейком. Я действительно понимаю, что Apple не желает открывать широкую систему разработчикам. «Твики» неопытных разработчиков могут привести к серьезным хаосам, а iPhone - как маломощный массовый продукт. Однако это не остановило меня от возиться и улучшить систему;) – YllierDev

ответ

3

Как сказал YllierDev, вы можете посмотреть настройки MobileSubstrate, чтобы отобразить информацию. Но, что-то, что это может быть, чуть менее пугающим для кого-то нового, вы можете попробовать это:

  1. Во-первых, создать запуска демона. Это может работать в фоновом режиме и делать все, что вам нравится. Он будет запущен, когда телефон загрузится, поэтому пользователю не нужно сначала запускать какое-то приложение, а затем помещать его в фоновый режим. Я нашел this to be a good example of building a LaunchDaemon

  2. Похоже, вы уже знаете, как использовать недокументированные функции базовой системы телефонии для получения уведомления о новом вызове. Это будет ответственность вашего демона. Для полноты, see this answer или this other answer о том, как демон может прослушивать вызовы с помощью уведомлений Darwin.

  3. Когда вызов перехвачен, ваш демон может связаться с вашим сервером.

  4. Затем, вы можете создать простой всплывающее окно с something like this:

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 в вашем проекте, для CFUserNotificationDisplayAlert().

Но это должно дать вам всплывающее окно с данными динамического вызова.