Специальный API для запуска приложения из моего приложения
Я задал вопрос здесь, но ответ поможет мне открыть новую тему. Вскоре я хочу запустить бесплатное приложение в Appstore из своего приложения, но приложение, которое я хочу запустить, не имеет схемы URL. Комментарии к моему другому вопросу говорят, что использование некоторых специальных API, таких как SBSLaunchApplicationWithIdentifier, или классов, таких как UIDocumentInteractionController, делают это возможным. Может кто-нибудь, пожалуйста, помогите мне, как запустить приложение из моего приложения. заранее спасибо
1 ответ
Позвольте мне сначала сказать, что этот метод только джейлбрейк! Он использует частные API, которые Apple может прекратить поддерживать в любой момент в будущей версии!
Давайте вернемся к этому, этот метод использует [UIApplication launchApplicationWithIdentifier:suspended:]
приватный метод:
[[UIApplication sharedApplication] launchApplicationWithIdentifier:@"com.apple.Preferences" suspended:NO];
Из того, что я тестировал, вызов этого метода из приложения, не работающего от имени пользователя root, бесполезен, очевидно, что SpringBoard (или LaunchServices) разрешает только корневым приложениям запускать другие приложения с использованием этого метода.
Итак, сначала вам нужно сделать джейлбрейк вашего iPhone, а затем запустить приложение как root.
Чтобы ваше приложение работало от имени пользователя root, вам нужно поместить его в /Applications/YourApp.app вместо обычного / User / Applications / UUID /YourApp.app.
Вы можете установить OpenSSH с помощью Cydia и использовать SSH для доступа к оболочке вашего телефона.
Затем, после того, как ваше приложение окажется в нужном месте, вам нужно установить разрешения, например:
Я бы использовал те же, что и Cydia:
chown -R root:wheel /Applications/YourApp.app
Далее небольшой трюк. Бинарному файлу понадобится бит setuid:
chmod 4755 /Applications/YourApp.app/YourApp
И на последнем этапе SpringBoard не открывает приложения с битом setuid, но открывает скрипт (который может открыть другое приложение)! Просто измените имя двоичного файла на что-то вроде YourApp_:
mv /Applications/YourApp.app/YourApp /Applications/YourApp.app/YourApp_
И создайте новый файл с именем YourApp в папке вашего приложения с помощью следующего сценария:
#!/bin/bash
CrrDir=$(dirname "$0")
exec "${CrrDir}"/YourApp_
Теперь просто подождите (есть приложение для Cydia), и вы готовы к работе.
Извините, если это кажется трудным, это не так, я не помню, где я это узнал, но это было давно. Этот метод отлично работает во всех версиях iOS, и я только что протестировал его с iOS 5.1.
Опять же, ваше приложение не будет одобрено Apple, если вы делаете это.