Mobile Foundation compatibility for Android 12 and iOS 15
Kapil Powar, Manjunath Kallannavar, Mohanraj Loganathan November 19, 2021MobileFirst_Platform MobileFirst_Foundation Android 12 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.
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 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 email@example.com & firstname.lastname@example.org
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
- Direct Update
- Oauth Flow
- Certificate pinning
- Device SSO
- Push Notifications
- 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.
- 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
- 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.
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_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 :
Native Android :
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.