2012-01-26 34 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と遊んでいますが、アプリケーションバンドルIDでアプリを起動することはできません。私はできますか?

launchApplicationWithIdentifier:UIApplicationも試しましたが、実際の解決策が必要であり、回避策はSimulatorでのみ機能するようです。

アイデア?ありがとうございました!

+0

私は非常に似たようなことをやろうとしています。私のアプリをSafariから開いた後で、新しいURLをロードせずにSafariに戻したいと思います。 Safariをタスクスイッチャーで切り替えた場合と同じようにSafariを開くだけです。これを達成するために使った "文書化されていない方法"について詳しく説明してください。 – Plasma

+0

iPadの回避策の1つは、内蔵のジェスチャーをユーザーに認識させることです。*画面上で4本の指を水平にスワイプすると、以前のアプリに戻ることができます。 iPad専用だと思われ、ハンドヘルド機器ではない。 –

答えて

2

唯一の方法は、両方のアプリがそれぞれカスタムURLスキームをサポートすることです。次に、他のアプリのURLに発信者のURLを埋め込みます。

たとえば、App2がApp2を「コールバック」できるようにApp2を呼び出すとします。あなたは、あなたが再び「コールバック」するopenURL:で開くことができ、文字列app2://blablaを取り戻すだろうcaller一部をデコードするとき

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

:それはこのようにURLを作成して開きます。

+0

はい、カスタムURLスキームをサポートするアプリがないと不可能です。すべての可能性を排除したい、DarkDustに感謝! – zapador

+1

あなたはFacebookのアプリを見たことがありますか?私たちは認証のためにFacebookのアプリに行き、次にFacebookのアプリを開いています。たとえ私たちのアプリがカスタムURLスキームを持っていなくても... – Saurabh

+2

それは、 facebook SSO(シングルサインオン)はFacebookのカスタムURLスキームを登録します。 – Lance

関連する問題