Skip to main content

IMWebView

プラットフォーム

  • ios
  • android

概要

IMWebViewはreact-native-webviewのWrapperでiAP上の画面を表示させることを目的としたコンポーネントです。
アクセストークンを用いてあなたがiAPのコンテンツを表示する前にログインを行います。 アクセストークンはiAP以外のコンテンツを表示する際には送信されないため、ほとんどの場合あなたがセッションの安全性について何か特別な事を行う必要はありません。

依存関係

info

Smartlimeは全てのProviderを包括しているため、Smartlimeが配置されている場合にはこの項目の内容は無視することができます。

IMWebViewはIMTenantIMOAuthに依存しています。
IMWebViewを利用する場合は、常にIMTenantIMOAuthを合わせて配置してください。

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>
)
}
info

IMWebView内部で利用されるアクセストークンはIMOAuthあるいはSmartlimeから取得されるため、これらのProviderが上位層に存在しない場合、IMWebViewは常にエラーを返します。
このためIMWebViewは常にIMOAuthあるいはSmartlimeにネストされたコンポーネントでOAuthの認可が完了している必要があります。

caution

あなたがbaseUrlに誤ったURLを設定した場合、外部にアクセストークンやセッションIDが流出する可能性がある事に注意してください。

Props

IMWebViewのPropsはreact-native-webviewとほとんど同一です。
安全上の理由からいくつかのPropsがOmitされている以外にこれらの追加のPropsを持ちます。

NameTypeRequiredDefault
onSessionCreationErrorOnSessionCreationErrorno
indicatorJSX.Elementno
forceLoginbooleannofalse

onSessionCreationError

これは初回のセッションID取得中にエラーが発生した場合に呼び出されます。
アクセストークンが既に無効なものであった場合や通信に失敗した場合などに発生する可能性があります。

構文

  • (error: IMWebViewError) => void

indicator

これはセッションIDの取得中などに表示されます。
コンテンツの読み込み中に表示されるものではない事に注意してください。

caution

IMWebViewのindicatorは実装上の都合により、常にIMWebViewより上方向にその階層の全てを覆うように表示されます。
将来的にこの実装は変更される可能性があります。

もっとも簡単な回避方法はIMWebViewをViewで囲うことです。

<View>
<IMWebView
source={{
uri: 'https://example.org/imart/home',
}}
/>
</View>

forceLogin

trueの場合、常に新しいセッションを確立するようになります。

IMWebViewは通常ログインを行う前に以前のセッションが有効であるかを確認します。
以前のセッションが有効である場合、そのセッションを継続して利用しようとします。
forceLoginはこのセッションの確認を無視するためのpropです。

info

IMOAuthで以前とは別のユーザでログインした後でIMWebView内のログインユーザを切り替えたい場合などに使われることを想定しています。

danger

このpropを常にtrueにすることは非推奨です。
IMWebViewを使用するたびに新しいセッションを確立するため、iAP側のパフォーマンスに問題が発生する可能性があります。