Открыть приложение с идентификатором пакета - PullRequest
5 голосов
/ 29 августа 2011

Можно ли открыть приложение из нашего приложения с помощью bundle identifier. Предположим, у меня на устройстве установлено два приложения с com.test.app1 и com.test.app2. Могу ли я открыть app1 из моего app2.

Я знаю о методе openUrl. для этого я должен зарегистрировать схему URL в info.plist. и тогда я могу использовать следующий метод:

[[UIApplication sharedApplication] openUrl:[NSURL urlWithString:@"myApp1://"]];

Но что, если я не зарегистрировал схему URL или не знаю зарегистрированный URL?

Есть идеи??

Ответы [ 5 ]

7 голосов
/ 01 июня 2016

Вы можете использовать приватный API для этого

Class LSApplicationWorkspace_class = objc_getClass("LSApplicationWorkspace");
NSObject * workspace = [LSApplicationWorkspace_class performSelector:@selector(defaultWorkspace)];
BOOL isopen = [workspace performSelector:@selector(openApplicationWithBundleID:) withObject:@"com.apple.mobilesafari"];
3 голосов
/ 08 февраля 2013

Вы можете использовать вызов openUrl, но для успеха вы должны добавить некоторые значения в файл xy-Info.plist вашего проекта.

enter image description here

Как только вы это сделаете, вы можете позвонить:

[[UIApplication sharedApplication] openUrl:[NSURL urlWithString:@"xingipad://"]];

3 голосов
/ 29 августа 2011

Я не думаю, что это возможно.

0 голосов
/ 24 мая 2018

Ответ: Вы не можете открыть приложение напрямую только с идентификатором пакета.

Решение: Вы можете реализовать концепцию глубокого связывания (и использовать свой идентификатор пакета в качестве идентификатора глубокого связывания) для этого: Глубокая связь

0 голосов
/ 06 августа 2012

Возможно использование схем URL.

...