— 画面の境界を認識する条件

Specification

KARTE SDKでは画面の境界を認識することで、アプリ内メッセージの表示制御を行う機能があります。
本ドキュメントでは画面の境界を認識する条件について記載します。

画面の境界を認識する条件

画面の境界を認識する条件は2つあります。

  • 画面遷移の発生
  • Viewイベントの発火時(KARTEのサーバーにイベントが到達したかは問わない)

🚧

ブリッジSDK利用時の注意点

FlutterやReact Nativeなどを対象としたブリッジSDKをご利用中の場合。
画面遷移により画面境界を認識するかどうかはフレームワークやライブラリ等に依存します。
確実に画面境界を認識するために全ての画面でviewイベントを実装することを推奨します。

画面遷移の発生

利用頻度が高い下記コントローラで画面遷移処理が呼び出された場合に、SDKは画面境界を認識します。

コントローラ名メソッド名・プロパティ名
UIViewControllerpresent(_:animated:completion:)
UIViewControllerdismiss(animated:completion:)
UINavigationControllersetViewControllers(_:animated:)
UINavigationControllerpushViewController(_:animated:)
UINavigationControllerpopViewController(animated:)
UINavigationControllerpopToViewController(_:animated:)
UINavigationControllerpopToRootViewController(animated:)
UITabBarControllerselectedIndex
UITabBarControllerselectedViewController

ただし画面境界の判断は modalPresentationStyle の値に影響を受けます。
custom overFullScreen overCurrentContext およびpopover の場合は画面境界として判定しません。
popoverの場合は UIAdaptivePresentationControllerDelegate により提供される adaptivePresentationStyle の値がこの判定に採用されます。
これは半モーダルなどの表現は画面コンテキストが継続していると定義しているためです。

※SwiftUIを利用している場合でも、importされたUIKit上で上記の画面遷移処理が呼び出された際にはSDKが画面境界を認識します。

Viewイベントの発火

Viewイベントの発火(viewメソッドの呼び出し)が行われた時点で画面の境界を認識します。

🚧

Viewイベントを送信しても画面境界として認識されないパターンについて

WebView内の計測タグからViewイベントを送信した場合は、画面境界として認識されません。
画面境界として認識されるのは、あくまでもネイティブSDKでViewイベントを送信した場合に限ります。

画面境界の認識をViewイベントに限定する方法

SDKの初期化時に、InAppMessagingConfigurationisAutoScreenBoundaryEnabledフラッグを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)