android-library icon indicating copy to clipboard operation
android-library copied to clipboard

Airship does not support Android 15 (Edge-To-Edge)

Open bmyagmarjav opened this issue 1 year ago • 1 comments

Screenshot

Preliminary Info

What Airship dependencies are you using?

com.urbanairship.android:urbanairship-message-center:18.3.0

What are the versions of any relevant development tools you are using?

Android studio and real device with Android 15

Report

What unexpected behavior are you seeing?

Message center activity does not support edge to edge and messages list overflows on status bar. Shared screenshot

What is the expected behavior?

Should support edge-to-edge android or push down that messages list below navbar

What are the steps to reproduce the unexpected behavior?

Support Android 35

android { compileSdk 35 ... defaultConfig { targetSdk 35 } }

Simply add MessageCenterActivity into your app and run it with Pixel 6 pro with Android 15

Do you have logging for the issue?

No because it is UI issue with newest OS and SDK

bmyagmarjav avatar Sep 18 '24 18:09 bmyagmarjav

Hi @bmyagmarjav, we're aware of these changes and are currently working on supporting them. We'll have a new release out soon with support for handling edge-to-edge on Android 15 devices.

I'll leave this open so that we can circle back and let you know when we've released a supported version.

jyaganeh avatar Sep 19 '24 00:09 jyaganeh

Any update?

bmyagmarjav avatar Oct 24 '24 18:10 bmyagmarjav

@bmyagmarjav Sorry for the delayed response, we're mostly there, but the changes to make Message Center support edge-to-edge were a bit more involved than we had originally hoped. Due to the scope of the changes, we're planning on releasing the updated Message Center UI as part of SDK 19, along with edge-to-edge support for Preference Center.

In the meantime, there are a couple of options to make Message Center in the current SDK version work properly with edge-to-edge enforcement in Android 15:

  • Embed a MessageCenterFragment() in your own Activity, where you can enable edge-to-edge display and handle insets as needed.

  • Opt-out Airship Activities from edge-to-edge enforcement temporarily

    • For Message Center (in SDK v18.4.0 and newer), this can be done by adding the following to your app styles.xml (or as an override in values-v35/styles.xml):
      <style name="UrbanAirship.MessageCenter.Activity" parent="Theme.MaterialComponents.DayNight">
          <item name="android:windowOptOutEdgeToEdgeEnforcement">true</item>
      </style>
      
    • For Message Center in SDK v18.3.x and below, include the style override above, and add the following to your AndroidManifest.xml, inside the <application> block:
      <activity
          android:name="com.urbanairship.messagecenter.MessageCenterActivity"
          android:theme="@style/UrbanAirship.MessageCenter.Activity"
          tools:replace="android:theme" />
      
    • Preference Center is similar:
      <style name="UrbanAirship.PreferenceCenter.Activity" parent="Theme.MaterialComponents.DayNight">
          <item name="android:windowOptOutEdgeToEdgeEnforcement">true</item>
      </style>
      
    • InApp Automation (for full-screen and modal Scenes):
      <!-- Note: the parent style for ModalActivity should not be modified! -->
      <style name="UrbanAirship.Layout.ModalActivity" parent="UrbanAirship.Layout.ModalActivityBase">
          <item name="android:windowOptOutEdgeToEdgeEnforcement">true</item>
      </style>
      

We're planning to release a beta build of SDK 19 in the coming weeks, to give users a chance to try out the new changes and give feedback. The official release will follow, after we've made any adjustments based on feedback and completed QA on the new release.

I'm going to close this out for now, but please feel free to reopen if you have any questions or run into any issues with either of the suggestions above.

jyaganeh avatar Nov 27 '24 23:11 jyaganeh