IMWebView
プラットフォーム
- ios
- android
概要
IMWebViewはreact-native-webviewのWrapperでiAP上の画面を表示させることを目的としたコンポーネントです。
アクセストークンを用いてあなたがiAPのコンテンツを表示する前にログインを行います。
アクセストークンはiAP以外のコンテンツを表示する際には送信されないため、ほとんどの場合あなたがセッションの安全性について何か特別な事を行う必要はありません。
依存関係
IMWebViewはIMTenantとIMOAuthに依存しています。
IMWebViewを利用する場合は、常にIMTenantとIMOAuthを合わせて配置してください。
import { IMTenant, IMOAuth, IMWebView } from "@intra-mart/smartlime";
import { DefaultAuthScreen } from "@intra-mart/smartlime-ui";
const WebViewComponent = () => {
return (
<IMWebView
source={{
uri: 'https://example.org/imart/home',
}}
/>
);
}
const App = () => {
return (
<IMTenant
baseUrl={'https://example.org/imart'}
tenantId={'default'}
>
<IMOAuth
requestConfig={
clientId: 'exampleId',
clientSecret: 'exampleSecret',
scopes: ['exampleScope'],
redirectUri: 'exp://example.org:19000',
}
>
<DefaultAuthScreen>
<WebViewComponent />
</DefaultAuthScreen>
</IMOAuth>;
</IMTenant>
)
}
あなたがbaseUrlに誤ったURLを設定した場合、外部にアクセストークンやセッションIDが流出する可能性がある事に注意してください。
Props
IMWebViewのPropsはreact-native-webviewとほとんど同一です。
安全上の理由からいくつかのPropsがOmitされている以外にこれらの追加のPropsを持ちます。
Name | Type | Required | Default |
---|---|---|---|
onSessionCreationError | OnSessionCreationError | no | |
indicator | JSX.Element | no | |
forceLogin | boolean | no | false |
onSessionCreationError
これは初回のセッションID取得中にエラーが発生した場合に呼び出されます。
アクセストークンが既に無効なものであった場合や通信に失敗した場合などに発生する可能性があります。
構文
- (error: IMWebViewError) => void
indicator
これはセッションIDの取得中などに表示されます。
コンテンツの読み込み中に表示されるものではない事に注意してください。
IMWebViewのindicatorは実装上の都合により、常にIMWebViewより上方向にその階層の全てを覆うように表示されます。
将来的にこの実装は変更される可能性があります。
もっとも簡単な回避方法はIMWebViewをViewで囲うことです。
<View>
<IMWebView
source={{
uri: 'https://example.org/imart/home',
}}
/>
</View>
forceLogin
trueの場合、常に新しいセッションを確立するようになります。
IMWebViewは通常ログインを行う前に以前のセッションが有効であるかを確認します。
以前のセッションが有効である場合、そのセッションを継続して利用しようとします。
forceLoginはこのセッションの確認を無視するためのpropです。
IMOAuthで以前とは別のユーザでログインした後でIMWebView内のログインユーザを切り替えたい場合などに使われることを想定しています。
このpropを常にtrueにすることは非推奨です。
IMWebViewを使用するたびに新しいセッションを確立するため、iAP側のパフォーマンスに問題が発生する可能性があります。