[iPhone] Web ブラウザを WKWebView 等で作る(Objective-C)

アプリ申請において、ブラウザは注意が必要なので調べてみました。WKWebViewで適当に作るとRejectになり易いようです。
尚、Swiftのケースはこちらです

UIWebView

Objective-C
Xcode 9.4

Web View

方法としてはSafariにURLを渡して代わりにWebを表示してもらう方法と、iOS8まではUIWebViewを使う方法ががありました。ただUIWebViewにはクラッシュが多いということとセキュリティ上の問題があります。そのためiOS8以降は WKWebView を使うことが推奨されています。
逆にいうとそれ以前はUIWebViewが残るというわけでしょうか。

UIApplication で Safari に飛ばす

Safari に代行してもらうという安易ですが安全かもしれない方法です。
アプリからちょっとWeb アクセスしたいだけなのに、「戻る」だの、「ダウンロード中」の表示だの考えなくていいので簡単です。
その辺適当にやると Apple から Regect くらうそうです。

UIApplicationのsharedApplicationを使います。
openURL:メソッドが iOS10から非推奨になったようで代わりにこれを使えとワーニングが出るようになりました。
openURL:options:completionHandler:

ViewController.m


コードはこれだけです。

ただし、Safari で Web に移動した後は、自分のアプリにはもどれません。

UIWebView クラスを使う

非推奨なクラスですが簡単に UIWebView をみておきましょう。

UIWebViewDelegate をセットします。
ViewController.h


ViewController.m


これで、ビルドして実行すれば、指定のURLにとびます。

WKWebView

簡単にWebViewを表示させるだけをStoryboardなしで作ってみます。
ViewController.h


ViewController.m


これにリロードやバックページなどのナビゲーションを入れるためには
WKNavigationDelegate、navigationDelegateの設定が必要になります。

またiPhoneXは全画面表示では困ることがありますのでSafeAreaを考えて設計する必要が出てきます。