— 画面の境界を認識する条件
Specification
KARTE SDKでは画面の境界を認識することで、アプリ内メッセージの表示制御を行う機能があります。
本ドキュメントでは画面の境界を認識する条件について記載します。
画面の境界を認識する条件
画面の境界を認識する条件は2つあります。
- 画面遷移の発生
- Viewイベントの発火時(KARTEのサーバーにイベントが到達したかは問わない)
ブリッジSDK利用時の注意点
FlutterやReact Nativeなどを対象としたブリッジSDKをご利用中の場合。
画面遷移により画面境界を認識するかどうかはフレームワークやライブラリ等に依存します。
確実に画面境界を認識するために全ての画面でviewイベントを実装することを推奨します。
画面遷移の発生
利用頻度が高い下記コントローラで画面遷移処理が呼び出された場合に、SDKは画面境界を認識します。
コントローラ名 | メソッド名・プロパティ名 |
---|---|
UIViewController | present(_:animated:completion:) |
UIViewController | dismiss(animated:completion:) |
UINavigationController | setViewControllers(_:animated:) |
UINavigationController | pushViewController(_:animated:) |
UINavigationController | popViewController(animated:) |
UINavigationController | popToViewController(_:animated:) |
UINavigationController | popToRootViewController(animated:) |
UITabBarController | selectedIndex |
UITabBarController | selectedViewController |
ただし画面境界の判断は modalPresentationStyle
の値に影響を受けます。
custom
overFullScreen
overCurrentContext
およびpopover
の場合は画面境界として判定しません。
popover
の場合は UIAdaptivePresentationControllerDelegate
により提供される adaptivePresentationStyle
の値がこの判定に採用されます。
これは半モーダルなどの表現は画面コンテキストが継続していると定義しているためです。
※SwiftUIを利用している場合でも、importされたUIKit上で上記の画面遷移処理が呼び出された際にはSDKが画面境界を認識します。
Viewイベントの発火
Viewイベントの発火(viewメソッドの呼び出し)が行われた時点で画面の境界を認識します。
Viewイベントを送信しても画面境界として認識されないパターンについて
WebView内の計測タグからViewイベントを送信した場合は、画面境界として認識されません。
画面境界として認識されるのは、あくまでもネイティブSDKでViewイベントを送信した場合に限ります。
画面境界の認識をViewイベントに限定する方法
SDKの初期化時に、InAppMessagingConfiguration
のisAutoScreenBoundaryEnabled
フラッグをfalseにして渡すことで、画面境界の認識をViewイベントのみに限定することが可能になります。
これにより、 SDKが画面境界を認識するタイミングをコード上で完全にコントロールすることが可能になります。
ポップアップの表示を詳細にコントロールしたい場合などに、ぜひご活用ください。
設定方法
KarteAppの初期化時に以下のようにFlagを追加してください
let iamConfiguration = InAppMessagingConfiguration()
iamConfiguration.isAutoScreenBoundaryEnabled = false
let configuration = Configuration { (configuration) in
configuration.libraryConfigurations = [iamConfiguration]
}
KarteApp.setup(appKey: appKey, configuration: configuration)
Updated 3 months ago