メインコンテンツまでスキップ

WebView

概要

このアプリ内で、外部のWebサイトやコンテンツを表示する際に使用するコンポーネントです。
React Native WebViewを使用し、共通部品として作成します。

機能

  • 指定されたURLのコンテンツを表示します。
  • エラーハンドリングは、Application Architectureに準拠します。
    • onError/onHttpError発生時の処理を親画面から渡せます。
  • onError発生時には、デフォルトでネットワークの確認を促すメッセージをスナックバーで表示します。
    スナックバーの表示/非表示、また表示する際のメッセージは、親画面から変更できます。
  • コンテンツがスクロール可能な場合、最底部までスクロールした時の処理を、親画面でハンドリングできます。

画面レイアウト

layout

※ onErrorとonHttpError時の画面を変更する場合は、個別の画面仕様書に記載します。

画面項目

表示項目

番号名称項目種別取得元表示/活性条件
O1取得したコンテンツWebView-(※1)コンテンツ取得に成功した場合のみ表示
O2エラーメッセージスナックバーメッセージキー:app.webview.onError(※2)React Native WebViewでonErrorが呼び出された、かつ親画面からプロパティ:onErrorが指定されていない場合のみ表示

(※1)React Native WebViewのプロパティで任意のURLを指定できます。
(※2)親画面から指定されたメッセージがあれば、そちらを優先します。指定がなければデフォルトのメッセージを表示します。

操作項目

番号名称項目種別操作種別表示/活性条件
T1取得したコンテンツWebViewスクロール-

イベント定義

ライフサイクル

イベント処理概要
初期表示指定されたURLのコンテンツを取得します。

ユーザ操作

イベント処理概要
コンテンツを一番下までスクロールプロパティ:onScrollEndで渡された処理を実行します。
初回のみ、プロパティ:onScrollEndOnceで渡された処理も実行します。

プロパティ

名称必須説明
onScrollEnd-functionコンテンツを一番下までスクロールした時に実行する処理
onScrollEndOnce-function最初にコンテンツを一番下までスクロールした時にのみ実行する処理
onError-functionReact Native WebViewのonErrorが発生した時に実行する処理
指定がない場合は、後述のエラー発生時の処理に準拠します
onHttpError-functionReact Native WebViewのonHttpErrorが発生した時に実行する処理
指定がない場合は、後述のエラー発生時の処理に準拠します

※ React Native WebViewには存在しないプロパティや、デフォルトの動作を提供しているもののみ記載しています。上記以外のプロパティについてはReact Native WebViewのAPIリファレンスをご参照ください。

エラー発生時の動作

Application Architectureのエラーハンドリングの方針に則り、WebViewを使用する各画面がエラー処理できるようにします。

  • ここでは、共通部品としてのデフォルトのエラー処理のみ記載します。画面個別のエラー処理がある場合は、画面側の設計書に記載します。

  • React Native WebViewを使用するため、onErroronHttpError属性を使用してエラーをハンドリングします。

属性名用途
onHttpErrorWebViewで表示するページを取得する時に、400以上のHTTPステータスコードで返却された場合に呼びだされます。SantokuAppのデフォルトの動作では、エラーの捕捉後に特に処理を実施しません。そのため、Webアプリから返されたエラー画面がそのまま表示されます。
ユーザ向けのエラー画面が返されない場合など、接続先のWebアプリに応じた処理が必要な場合は、個別にエラー処理を実施してください。
onErrorWebViewで表示するページを取得する時に、ネットワークエラーなどが発生した場合に呼びだされます。SantokuAppのデフォルトの動作では、ネットワークの確認を促すスナックバーを表示します。また、Firebase Crashlyticsにエラーログを送信します。画面仕様に依存した特別な処理が必要な場合は、個別にエラー処理を実施してください。
注記

onHttpErrorは、Androidの場合APIレベルが23以上のみ使用できます。

注意

WebViewで表示するページ内の画像やCSSなどの読み込みに失敗した場合は、onErroronHttpErrorではエラーを捕捉できません。

注意

iOSの場合デフォルトタイムアウトは60秒です。Androidの場合はデフォルトタイムアウトがありません。

なお、React Native WebViewはタイムアウトを設定できないため、表示するページとの通信を明示的にキャンセルできません。