Posted at

ATS対策 外部ページの表示にはSFSafariViewController

More than 3 years have passed since last update.

iOS9でそんなに大きく取り上げられなかったのに開発者には頭のいたいATS, App Transfer Security

APIをいくつかしか使ってないってなら「対応待ち」「例外設定」などで対応できますが、

沢山の外部サイトにリンクするアプリの場合はどうするの?ってことで。

結論「SFSafariViewControllerを使おうよ(見た目気にしなければ)」ってことです。

SFSafariViewControllerは「SafariのVC実装」なので、HTTPのサイトも表示できます。

で、こんな感じで実装してあげます。


ViewController

    Class safari = NSClassFromString(@"SFSafariViewController");

if (safari != nil) {
SFSafariViewController *safariViewController =
[[SFSafariViewController alloc] initWithURL:[NSURL URLWithString:@"http://example.com/"]];

[self presentViewController:safariViewController
animated:YES
completion:nil];
} else {
//iOS8以下の場合の処理。独自またはサードパーティのWebViewController呼び出しなど。
}


他にもやり方はそれぞれだろうとは思いますが、手っ取り早く外部リンク解決できます。

もちろん 

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://example.com/"]];

ってSafari呼び出しもていいんですけどね。