targetSdkVersion 35以降のAndroid環境におけるEdge to Edge対応についての注意事項

targetSdkVersion 35以降で確認している事象について

  • targetSdkVersion 35以上のAndroidアプリ環境において、window.decorView.rootViewに対してsetOnApplyWindowInsetsListenerWindowInsetsを設定した場合、アプリの描画領域とKARTEがIAMを表示する領域(=SDKが展開するWebView)のサイズが乖離する事象が発生します
  • このサイズの乖離が生じた場合には、IAM(=KARTE for Appで配信されたポップアップ)の表示や、タップ位置がずれる場合があります
  • この事象は、後述するInAppMessaging 2.23.0で追加されたオプションで回避できます。

InAppMessaging 2.23.0以降での対応について

InAppMessaging 2.23.0ではisEdgeToEdgeEnabled というオプションが追加されています。

このオプションを有効化することで当該の事象の発生を回避できます。
以下はこのオプションを有効化するサンプルコードです。

val iamConfig = InAppMessagingConfig.Builder()
   ... 
    .isEdgeToEdgeEnabled(true)  
    .build()
    
  
val cfg = Config.Builder()
    ...
    .libraryConfigs(iamConfig)
    .build()
    
KarteApp.setup(this, cfg)

InAppMessaging 2.22.0以前での事象の回避方法について

以下の2つの方法で回避できます。

方法1

  • window.decorView.rootView に対してWindowInsetsを設定するのではなく、以下のように (window.decorView as ViewGroup).getChildAt(0) 等で取得したViewに対してWindowInsetsを設定する
    	val view = (window.decorView as ViewGroup).getChildAt(0)
      view.setOnApplyWindowInsetsListener { v, insets ->
    	  // insetsを適用
      }
    

方法2

  • 画面全体ではなく個別のViewにWindowInsetsを設定する

関連情報