URL Schemeの仕様を確認していて、ふと「アプリケーション内から自分自身のURL Schemeを叩くとどうなるのか」という実験をしてみました。
画面上にボタンを設置し、ボタンが押されたタイミングで自分のアプリのURL SchemeからはじまるURLを開くように設定。
- (IBAction)openURL:(id)sender { [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"urltest://foo"]]; }
アプリケーション側のplistにURL Scheme urltestを登録。
最後に、アプリケーションデリゲートにURL Scheme経由で呼ばれたときのコールバックを実装。
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { NSLog(@"handled: %@", url); return YES; }
実際に動かしてみる。
というわけで自分自身のURL SchemeからはじまるURLをOpenしようとすると、特にアプリが切り替わったりすることなくapplication:openURL:sourceApplication:annotation:が呼ばれるようです。なにに使えるかというと、URL Schemeが正しく機能するかどうかのテストの自動化に使えるわけですが、まあ使う場面は少なそうだな…。