Mobile Foundation compatibility for Android 12 and iOS 15

The ongoing pandemic has affected all our lives in more ways than one in 2020 and still continues to be in year 2021. However, all of this did not stop both Google and Apple from releasing pre-release versions of their new mobile operating systems to developers this year. In this post, we will assess the new changes and features in both iOS 15 and Android 12 and the compatibility of Mobile Foundation SDKs with Android 12 and iOS 15.

iOS 15

Apple in June 2021 introduced the latest version of its iOS operating system, iOS 15, which is released on September 20. iOS 15 introduces a slew of new features that is inviting a lot of interest from the developer community are FaceTime calls, tools to reduce distractions, a new notifications experience, added privacy features, complete redesigns for Safari, Weather, Maps, and more.

You can read more about all the new features in iOS 15 here.

Android 12

Android has always been about personalization and allowing you to select the device, service and experience that’s right for you. Android 12 focuses on developing an operating system that is secure by default and private by design, and making all your devices work better together.

Android 12 introduces various new Features and APIs, Behavior changes for developers and end users.

MFP Push notifications support for Android 12 is available from SDK levels cordova-plugin-mfp-push@8.0.2021062405 & ibmmobilefirstplatformfoundationpush@8.0.2021062405

Mobile Foundation Support for Android 12 and iOS 15

We have verified various features of MobileFirst Platform Foundation on the Android 12 4 and iOS 15 for MobileFirst Platform Foundation v8.0.

Here are some notable feature compatibility tests that were performed with Mobile Foundation v8.0.

  • Invoking backend procedures through adapters
  • Application Authenticity
  • Application Management
  • JSONStore
  • Direct Update
  • Oauth Flow
  • Certificate pinning
  • Device SSO
  • Analytics
  • Push Notifications
  • Appcenter
  • In-App Feedback
  • Live update

We have validated the features and functionalities of Mobile Foundation v8.0 on iOS 15 and Android 12 with the following SDK versions.

Android

  • ibmmobilefirstplatformfoundation:8.0.2021061706
  • ibmmobilefirstplatformfoundationjsonstore:8.0.2021062313
  • ibmmobilefirstplatformfoundationpush:8.0.2021062405
  • ibmmobilefirstplatformfoundationanalytics:8.0.2020081208
  • ibmmobilefirstplatformfoundationliveupdate:8.0.202003051505

Cordova

  • cordova-plugin-mfp-push 8.0.2021062405
  • cordova-plugin-mfp 8.0.2021090603
  • cordova-plugin-mfp-jsonstore 8.0.2021090603
  • cordova-plugin-mfp-analytics 8.0.2021090603
  • cordova-plugin-mfp-liveupdate 8.0.202003051505

iOS

  • IBMMobileFirstPlatformFoundation 8.0.2021062406
  • IBMMobileFirstPlatformFoundationPush 8.0.2019082914
  • IBMMobileFirstPlatformFoundationJSONStore 8.0.2020101204
  • IBMMobileFirstPlatformFoundationLiveupdate 8.0.202005041257

We encourage you to start testing your application(s) with iOS 15 and Android 12.

Known Issues

Pending intents mutability

If your app targets Android 12, you must specify the mutability of each PendingIntent object that your app creates. This additional requirement improves your app’s security.

To declare that a given PendingIntent object is mutable or immutable, use the PendingIntent.FLAG_MUTABLE or PendingIntent.FLAG_IMMUTABLE flag, respectively. If your app attempts to create a PendingIntent object without setting either mutability flag, the system throws an IllegalArgumentException, and the following message appears in Logcat:

PACKAGE_NAME: Targeting S+ (version 31 and above) requires that one of \
FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent.

Strongly consider using FLAG_IMMUTABLE, only use FLAG_MUTABLE if \
some functionality depends on the PendingIntent being mutable, e.g. if \
it needs to be used with inline replies or bubbles. 

Applications using MFP Push Notifications service with older MFP Push SDK will crash upon receiving notification because of above changes. We have addressed this issue in our latest MFP Push SDK plugins.

  • Cordova Android : cordova-plugin-mfp-push@8.0.2021062405

  • Native Android :ibmmobilefirstplatformfoundationpush@8.0.2021062405

Safer component exporting

If your app targets Android 12 and contains activities, services, or broadcast receivers that use intent filters, you must explicitly declare the android:exported attribute for these app components.

If an activity, service, or broadcast receiver uses intent filters and does not have an explicitly-declared value for android:exported, your app cannot be installed on a device that runs Android 12.

Be sure to also review the list of behavior changes that affect all apps running on Android 12.

Stay tuned for further updates, as we continue to update our findings on Android 12 and iOS 15.

Disclaimer: Some of the action items that are mentioned in the list above are not under IBM’s control. Therefore, we expect developers and IT managers to ensure that their infrastructure is up to date according to Android requirements.

Inclusive terminology note: The Mobile First Platform team is making changes to support the IBM® initiative to replace racially biased and other discriminatory language in our code and content with more inclusive language. While IBM values the use of inclusive language, terms that are outside of IBM's direct influence are sometimes required for the sake of maintaining user understanding. As other industry leaders join IBM in embracing the use of inclusive language, IBM will continue to update the documentation to reflect those changes.
Last modified on November 19, 2021