iOS 9 introduces App Transport Security (ATS) to encourage the use of secure connections.
This is great, but what if my app has a built in web browser that the user
Rather than enabling NSAllowsArbitraryLoads, a more secure solution is to conditionally use SFSafariViewController, which allows arbitrary loads.
If the class exists, then present it, otherwise, present your own UIViewController (which contains a UIWebView).
UIViewController *webBrowser;
if ([SFSafariViewController class] != nil) {
webBrowser = [[SFSafariViewController alloc] initWithURL:url];
} else {
webBrowser = [[ABCWebBrowserController alloc] initWithURL:url];
}
[self presentViewController:webBrowser animated:YES completion:nil];