【iOS】AppExtensionからURLスキームでアプリを起動する_iOS8.3
iOS8以降で追加可能となったカスタムキーボードのようなAppExtensionから他アプリ(本体アプリ等)を起動する際のポイント。
iOS8.2までは以下の方法で可能だった。
(ボタンタップ時にアプリを起動する例)
-(IBAction)toApp:(id)sender{ UIWebView *webView = UIWebView.new; [self addSubview:webView]; [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"com.sample.yourapp://"]]]; }
iOS8.3からは上記ではアプリが起動されないため以下のように変更する。
-(IBAction)toApp:(id)sender{ UIResponder* responder = self; while ((responder = [responder nextResponder]) != nil) { NSLog(@"responder = %@", responder); if ([responder respondsToSelector:@selector(openURL:)] == YES) { [responder performSelector:@selector(openURL:) withObject:[NSURL URLWithString:@"com.sample.yourapp://"]]; } } }
この方法であれば8.2以前でも起動することができるので場合分けは不要。