iOSでハイブリッドアプリで、UIWebView全面に出すようなアプリだと、Webアプリ側のエラーが出て、スタックトレースがでるとまずいことがある。
iOSのネイティブアプリ側で、Webアプリからのレスポンスのステータスコードを見て、400/500番台だったら処理を変えたいが、ネイティブアプリ側でステータスコードをとるのはちょっと大変。
JSP/サーブレットとかであれば、Web.xmlの編集でも対応できる。
<error-page>
<error-code>500</error-code>
<location>/out.jsp</location>
</error-page>
<error-code>に指定するステータスコードはその他、401/403/404などでも。
<location>はhtmlでもJSPでも良い。
<head>
<meta http-equiv="Refresh" content="0; URL=native://closeWebView">
</head>
表示させたページに<meta>で、リダイレクトされるように書いておく。
それで、ネイティブアプリ側では、
-UIWebViewを配置しているビューコントローラのクラスにUIWebViewDelegateプロトコルをインプリメント
-クラスをUIWebViewのdelegateに設定
-webView:shouldStartLoadWithRequest:navigationType: を実装
を行なって、shouldStartLoadWithRequest:navigationTypeには、上記のlogout.jspみたいなリダイレクトされたとき、プロトコル部分がnative でホスト部分が closeWebViewだったら画面を終了するように書いておく。