2012-01-26 2 views
5

Я работаю над приложением, которое управляет своей собственной схемой URL, так что я реализовать функцию обратного вызова:Как запустить приложение, которое открыло мою собственную схему 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, но я не могу запустить приложение в своем приложении Bundle ID. Могу я?

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

Любые идеи? Спасибо!

+0

Я пытаюсь сделать очень похожее, после открытия моего приложения из Safari. Я хочу вернуться в Safari (без загрузки нового URL-адреса). Я хочу просто открыть Safari, как если бы я переключился на него с помощью Task Switcher. Можете ли вы рассказать о «недокументированном методе», который вы использовали для достижения этого? – Plasma

+0

Одним из способов обхода iPad является информирование пользователя о встроенном жесте: * Прокрутка по четыре пальца по экрану для возврата к предыдущему приложению *. Кажется, это только iPad, а не на карманных устройствах. –

ответ

2

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

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

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

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

+0

Да, я боюсь, что это невозможно без каждого приложения, поддерживающего настраиваемую схему URL. Просто хочу исчерпать все возможности, спасибо DarkDust! – zapador

+1

Должен быть какой-то другой способ .. вы видели приложение facebook ... мы идем в приложение facebook для аутентификации, а затем приложение facebook открываем наше приложение .. даже когда наше приложение не имеет настраиваемой схемы URL. – Saurabh

+2

Это потому, что приложения, аутентифицирующие с помощью facebook SSO (единый вход) регистрирует свою собственную схему URL-адресов с помощью facebook. – Lance

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