URL Schemes の設定について ios iPhone xcode
iPhone アプリ開発において、URL Scheme の設定をしておくと、他のアプリ、ブラウザから設定したアプリを起動することができます。
特別、設定したい等の理由がない限り、設定してしておくと、他のアプリ、ブラウザのリンク等から起動できますので、設定しておくと便利でお得になります。
URL Schemes の項目は自由に設定できますが、下記で恐らく非認定ですが、全て登録されているわけではありませんが、他のアプリの一覧が参照できますので、被らないものを設定しましょう。特に有名なアプリと被ると起動しないこともありますので・・・
ちなみに、被った場合は、何が起動されるかの保証はないそうです。。
間違って、line とか設定してしまうと起動する確率がほぼないのではないでしょうか。
こちらで主要なアプリのスキーマを検索できます。
設定方法は簡単で、xcode の
TARGETS → Info → URL Types に設定をします。
URL Schemes に 設定したいスキームを入力します。
test:// で起動したい場合は、test
また、複数指定することもできます。
atest も設定したい場合は、test,atest
Identifier 一意なキーを設定します。多くのアプリは、com.example.test のようにパッケージ名を指定しています。
一意になればなんでも良いとの仕様だそうです。
URL Schemes から起動時、
AppDelegate に下記のメソッドを設定すると、起動時になにかしらの処理をすることができます。
ブラウザ等のURL欄に test:// と入力すると先ほど指定したアプリがインストールされていれば
自動的に起動します。また、test://asdf のように // 以降に文字列をセットするとアプリ内で値を取得することもできます。
ios 4.2以降
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{ NSLog(@"- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation"); NSLog(@"absoluteString : %@",[url absoluteString]); NSLog(@"scheme : %@",[url scheme]); NSLog(@"query : %@",[url query]); NSString *absoluteString = [url absoluteString]; if ([absoluteString isEqualToString:@"testscheme://"]) { NSLog(@"Open URL Schemes !!"); } return YES; }
ios 4.1以前 4.2以降でopenURLがない場合、
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { NSLog(@"- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url"); NSLog(@"absoluteString : %@",[url absoluteString]); NSLog(@"scheme : %@",[url scheme]); NSLog(@"query : %@",[url query]); NSString *absoluteString = [url absoluteString]; if ([absoluteString isEqualToString:@"testscheme://"]) { NSLog(@"Open URL Schemes !!"); } return YES; }
safari で アドレスに 設定した、testscheme:// を入力して Go をタップすると
先ほど設定したアプリが立ち上がります。
参考文献
http://develop.calmscape.net/dev/182/
http://d.hatena.ne.jp/nakamura001/20111105/1320501005