Как я могу запустить приложение, которое открыло мою собственную схему URL? - PullRequest
5 голосов
/ 26 января 2012

Я работаю над приложением, которое управляет моей собственной схемой URL, поэтому я реализую обратный вызов:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions (NSDictionary *)launchOptions
{
    // Get our launch URL
    if (launchOptions != nil)
    {
        // Launch dictionary has data
        NSURL* launchURL = [launchOptions objectForKey: UIApplicationLaunchOptionsURLKey];

        // Parse the URL
        NSString* hostString = [launchURL host];

        blah blah blah...

Это работает очень хорошо, но мне нужно запустить приложение вызывающего абонента (то есть приложение, которое открылоURL).Итак, мой вопрос здесь, это возможно?

Я играл с UIApplicationLaunchOptionsSourceApplicationKey, но я не могу запустить приложение по его идентификатору приложения.Могу я?

Я также попробовал недокументированное launchApplicationWithIdentifier: из UIApplication, но мне нужно реальное решение, и кажется, что обходной путь работает только в симуляторе.

Есть идеи?Спасибо!

1 Ответ

2 голосов
/ 26 января 2012

Единственный способ состоит в том, чтобы оба приложения поддерживали собственную схему URL.Затем вы встраиваете URL вызывающего абонента в URL другого приложения.

Например, предположим, что App2 хочет вызвать App1 таким образом, чтобы App1 мог затем «перезвонить» в App2.Он будет создавать и открывать URL-адрес следующим образом:

app1://?caller=app2%3A%2F%2Fblabla

Когда вы декодируете часть caller, вы получите строку app2://blabla, которую затем сможете снова открыть с помощью openURL: для "обратного вызова».

...