2013-11-28 6 views
3

Я сделал App-Store app и хотел бы сейчас сделать настройку, чтобы запустить его в фоновом режиме с помощью UIBackgroundMode VoIP (поддерживая сокет открытым). UIBackgroundModes хранятся в файле Info.plist.Добавить новый UIBackgroundMode в приложение App Store с Jailbreak tweak/script

Что было бы лучшим способом придать моему приложению VoIP UIBackgroundMode в Cydia? Будет ли это просто скрипт, который изменяет файл Info.plist приложения (если это не нарушит подпись приложения и вызовет проблемы), или есть функция, которую я мог бы переопределить с помощью настройки?

(Я предполагаю, что в любом случае я мог бы внести минимальные изменения в код моего приложения, необходимый для использования этого UIBackgroundMode (который выполняется только тогда, когда действительно установлен режим), и что Apple не обнаружит этого. приложение с активным VoIP UIBackgroundMode и было отклонено Apple. После его удаления и соответствующего кода приложение было принято.)

ответ

4

Да, вы можете это сделать. Это просто вопрос изменения файла Info.plist приложения (и, возможно, перезагрузки).

На поврежденном устройстве изменение файла Info.plist приложения App Store не вызовет проблем с подписью приложения.

Я предполагаю, что вы можете попытаться найти способ сделать это программно, но, честно говоря, я не знаю, что требуется нечто большее, чем скрипт. Вы просто делаете одноразовую модификацию, не так ли? Итак, для меня это звучит просто, просто написав эту модификацию, и поставить ее в ваш файл «tweak» DEBIAN/preinst или DEBIAN/postinst будет достаточно.

У меня есть несколько мыслей:

1. По умолчанию вашего Info.plist файл будет двоичным, что делает его более трудным для редактирования (с помощью сценария). Это можно обойти довольно легко, выполнив эту команду до изменения файла Plist:

plutil -convert xml1 Info.plist 

внутри .app директории вашего приложения. Это оставит Info.plist в виде текстового файла. Дайте мне знать, если у вас нет plutil, и я могу отслеживать, какой пакет Cydia содержит его.

Примечание: вам не нужно преобразовывать диск обратно в двоичный файл после его редактирования. Текстовые плиты также действительны.

2. Вы можете выбрать, чтобы связать модифицированный info.plist с вашим пакетом Debian, а просто заменить версию App Store с подредактированы версиями. Однако вам нужно беспокоиться о номерах версий и любых других свойствах этого файла, которые вы обновляете новыми версиями. В этом случае простое копирование версия Info.plist в каталог .app может не работать для всех версий. Таким образом, вам может понадобиться, чтобы определить, какой вариант у вас есть, или найти файл Plist для

<key>UIBackgroundModes</key> 

и вставьте режим VOIP там. Я не очень разбираюсь в таких инструментах, как sed и, и вы, вероятно, можете задать простой сценарий здесь, если вам нужна помощь в этой части ... Я знаю, что iOS ... скрипты ... меньше)

3. Если вашему скрипту необходимо определить версию приложения в Info.PLIST по какой-то причине, эта командная строка будет делать:

plutil -key CFBundleVersion Info.plist 

Примечание: в то время как это возможно, что существует Private API, чтобы сделать это, я не удивлюсь, если там был не. Мне трудно представить себе причину, по которой Apple будет это делать, и если они не видят причины для этого, вероятно, нет API (общедоступный или закрытый). Обычно вы принимаете решение по UIBackgroundModes по адресу компилируете времени.

+0

Еще раз спасибо за еще один удивительно полный и информативный ответ, выходящий за рамки того, что дает большинство ответов. – newenglander

+1

@newenglander, добро пожаловать. Обратите внимание на «примечание», которое я добавил в разделе №1. – Nate

+0

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

 Смежные вопросы

  • Нет связанных вопросов^_^