2011-08-06 11 views
3

Safariでmailtoの動作と同様のカスタムURLスキームを実装したいと考えています。私のhtmlではmyappスキームが定義されている私のアプリケーションを呼び出すカスタムスキーム(myapp:// parmsなど)へのリンクがあります。 myappが完了したら、私はSafariのブラウザページに戻りたいと思います。 'mailto:'がある場合、メールアプリケーションにはキャンセルボタンがあります。あなたがそれを押す、または送信を行うと、完了したらそれはなくなり、Safariのページがそこにあります。iOS URL Scheme、完了したらSafariに戻る

私は自分のアプリを殺すはずがないと知っています。私が試してみると、それは家に戻って、とにかくサファリではない。呼び出し元のアプリケーションが戻ってきたので、私のカスタムスキームアプリがなくなる(非表示にする)方法はありますか?

答えて

4

このスキームにコールバックURLを指定すると、タスクの実行が完了したときに開くことができます。例えば、

myapp://dosomeaction?callback=http://referring-site.com 

は、その後、あなたは単にコールバックURLを読み、そこに行くためにopenURL:を使用します。呼び出し元に成功/失敗を示すための追加パラメータを追加することもできます。

+0

この問題は、カスタムスキームを呼び出すWebページがフォームであり、フォームからカスタムアプリケーションを呼び出して戻りたいので、フォーム上のすべてのデータを失うことができません。ブラウザを再度呼び出すと、フォームにすでに入力されているデータが失われます。 mailto:の処理方法はまさに私がやりたいことです。 – sjay

+0

mailtoとまったく同じようにすることはできません。これは、オペレーティングシステムによって処理され、モーダルMFMailComposeViewControllerを使用するためです。同じ方法でアプリを表示する方法はありません。切り替えは可能です。 – jtbandes

3

ここで最も適切なのは、カスタムスキームを使用してURLに戻すURLを渡すことです。言い換えれば、 'コールバック' URLをURLエンコードし、アプリケーションを開くために使用されるURLの要素として配置します。

アプリケーションがタスクを完了すると、開いたときに受け取ったこのデータを使用して、[[UIApplication sharedApplication] openURL:yourURL]メソッドを使用してURLを再度開きます。

+0

メールアプリケーションがOPで指定された通りにSafariに戻ったときの仕組みですか? –

関連する問題