2011-09-13 7 views
8

私はURL経由で開かれ、あなたがサポートできる場合documentationあなたはYESを返す必要がありますによるとアプリケーション:OpenURLの:sourceApplication:注釈がYES NO対を返す

application:openURL:sourceApplication:annotation

で混乱していますさを処理するアプリケーションを登録していますURLとそうでない場合はNO。これは何が良いのですか? URLが不正な形式やサポートされていないものの、何も問題がないかのようにアプリがまだ開いている場合、私はNOを返します。誰がそれを聞いてBOOLリターンと彼らはそれをどうしますか? URLの形式が誤っているかサポートされていない場合、アプリが開かないようにするにはどうしてですか?

答えて

4

文書では、URIを正常に開いた場合はYES、そうでない場合はNOを返します。 「は成功したか、開けなかったか」は意味的に「できますか開けませんか」となります。残念ながら、アプリが起動しないようにする方法はありません。スキーマを登録すると、残りのURIが正しくフォーマットされているかどうかにかかわらず起動されます。

UIApplicationには、canOpenURL:openURL:という2つの方法があります。最初の1つのみは、スキーマがサポートされているかどうか(フルURLではなく)を確認します。後者はアプリケーションを起動し、アプリケーションデリゲートの結果を返します。

だからあなたの質問に答えるために:[[UIApplication sharedApplication] openURL:url]を呼び出し、他のアプリが

+0

注目ので、/どのように他のアプリが応答に応じる必要があるデリゲートの結果に耳を傾けるものですか?その時点で、ユーザーは、渡されたURLを処理する方法を知らないアプリにあります –

+0

正しいです。その時点で、ユーザーは他のアプリに入っていて、他のアプリがあなたのアプリを起動していない場合や、ユーザーが手作業で戻っていない限り、あなたのアプリに戻ることはありません。私は彼らの意図がこのAPIを作成しているかどうかはわかりませんが、私はそれがお互いに "うまく遊ぶ"同じ開発者のアプリ間のコミュニケーションのために主に作成されたものと想定しています。これは推測ですが、私はあなたがAppleがこのアプローチを持っている理由についてのドキュメントを見つけることはできないと思います。また、古いバージョンのiOSの上に「できるだけ多くのことができました」という古いAPIでもかまいません。 – Nick

+1

それは正当な仮定です。入力いただきありがとうございます、私はこれが主に無駄な戻り値だとの信念で答えてマークします。 –