Да, вы можете это сделать. Это просто вопрос изменения файла 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
по адресу компилируете времени.
Еще раз спасибо за еще один удивительно полный и информативный ответ, выходящий за рамки того, что дает большинство ответов. – newenglander
@newenglander, добро пожаловать. Обратите внимание на «примечание», которое я добавил в разделе №1. – Nate
Для этого есть частный API. Apple использует его для запуска системных процессов, которые могут запускаться в любое время, но не используют службу APNS. –