Release Notes
What’s new in PMF9.0 release
Cordova-android@12.x and Cordova-ios@7.0.1 support – The new Cordova SDK supports Android@12.x and ios@7.0.1 versions.
With PMF9.0, you will get new and improved PMF samples which support the latest IDEs/versions for Android, iOS and ReactNative.
New, improved development command-line interface (CLI) - The Persistent Mobile Foundation Command Line Interface (CLI) has been redesigned for greater development efficiency, including for use in automated scripts. Commands now start with the prefix pmfdev.
Supported Environments
Persistent Mobile Foundation 9.0 has been validated on the following environments:
Operating Systems
- RHEL 8.0
- RHEL 9.0
- Ubuntu 22
Application Servers
- Websphere Liberty 8.5.5
- WAS 9.0.5
- WAS ND 9.5.16
- Tomcat 9.0
Databases
- DB2 11.5.9
- Oracle 19C
- MySQL 8.0
Security Fixes
Following is the list of vulnerabilities which have been fixed in PMF9.0 release:
- CVE-2022-1471
- CVE-2020-9548
- CVE-2020-9547
- CVE-2020-9546
- CVE-2020-8840
- CVE-2019-16942
- CVE-2019-14540
- CVE-2019-16943
- CVE-2019-16335
- CVE-2019-20330
- CVE-2019-14893
- CVE-2019-17531
- CVE-2019-17267
- CVE-2019-10202
- CVE-2019-14892
- CVE-2019-14379
- CVE-2018-11307
- CVE-2018-14718
- CVE-2018-14719
- CVE-2017-1000487
- CVE-2017-17485
- CVE-2017-15095
- CVE-2017-7525
Known issues and Limitations
General limitations apply to Persistent Mobile Foundation v9.0 as detailed here. Limitations that apply to specific features are explained in the topics that describe these features.
Globalization
-
Partial translation: Part of the product Persistent Mobile Foundation v9.0, including its documentation, is translated in the following languages: Simplified Chinese, Traditional Chinese, French, German, Italian, Japanese, Korean, Portuguese (Brazil), Russian, and Spanish. User-facing text is translated.
-
Bidirectional support: The applications that are generated by Persistent Mobile Foundation are not fully bidirectional enabled. Mirroring of the graphic user interface (GUI) elements and the control of the text direction are not provided by default. However, no hard dependency exists from the generated applications on this limitation. It is possible for the developers to achieve full bidi compliance by manual adjustments in the generated code. Although translation into Hebrew is provided for Persistent Mobile Foundation core functionality, some GUI elements are not mirrored.
-
Constraints on adapter names: Names of adapters must be valid names to create a Java™ class name. In addition, they must be composed only of the following characters:
- Uppercase and lowercase letters (A-Z and a-z)
- Digits (0-9)
- Underscore (_)
- Constraints on application names and versions: Names of applications must be valid names composed only of the following characters:
- Uppercase and lowercase letters (A-Z and a-z)
- Digits (0-9)
- Special characters except square brackets [], curly brackets { } and parentheses ().
- Unicode characters: Unicode characters outside the Basic Multilingual Plane are not supported.
- Language sensitivity and Unicode Normalization Forms: In the following use cases, queries do not consider language sensitivity such as normal matching, accent-insensitive, case-insensitive, and 1-to-2 mapping for the search function to run correctly in different languages, and search on data does not use Normalization Form C (NFC).
- From the PMF Analytics Console, when you create a custom filter for a custom chart. However, in this console, the message property uses Normalization Form C (NFC) and considers language sensitivity.
- From the PMF Operations Console, when you search for an application in the Browse Applications page, for an adapter in the Browser Adapters page, for a tag in the Push page, or a device on the Devices page.
- In the Find functions for the JSONStore API.
Persistent Mobile Foundation Analytics
The Persistent Mobile Foundation Analytics has the following limitations:
- Security analytics (data on requests failing security checks) is not supported.
- In PMF Analytics Console, the format for numbers does not follow the International Components for Unicode (ICU) rules.
- In PMF Analytics Console, the numbers do not use the user’s preferred number script.
- In PMF Analytics Console, the format for dates, times, and numbers are displayed according to the language setting of the operating system rather than the locale of Microsoft Internet Explorer.
- When you create a custom filter for a custom chart, the numerical data must be in base 10, Western, or European numerals, such as 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.
- When you create an alert in the Alert Management page of PMF Analytics Console, the numerical data must be in base 10, Western, or European numerals, such as 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.
- The Analytics page of the PMF Operations Console supports the following browsers:
- Microsoft Internet Explorer version 10 or later
- Mozilla Firefox ESR or later
- Apple Safari on iOS version 7.0 or later
- Google Chrome latest version
- The Analytics client SDK is not available for Windows.
Persistent Mobile Foundation Application Center mobile client
The Application Center mobile client follows the cultural conventions of the running device, such as the date formatting. It does not always follow the stricter International Components for Unicode (ICU) rules.
Persistent Mobile Foundation Operations Console
The PMF Operations Console has the following limitations:
- Provides only partial support for bidirectional languages
- The text direction cannot be changed when notification messages are sent to an Android device:
- If the first letters typed are in a right-to-left language, such as Arabic and Hebrew, the whole text direction is automatically right-to-left.
- If the first letters typed are in a left-to-right language, the whole text direction is automatically left-to-right. The sequence of characters and text alignment do not match cultural fashion in the bidirectional language.
- The numeric fields do not parse numeric values according to the formatting rules of the locale. The console displays formatted numbers but accept as input only raw (unformatted) numbers. For example: 1000, not 1 000, or 1,000.
Adapters and third-party dependencies
The following known issues pertain to interactions between dependencies and classes in the application server, including the PMF shared library.
- Apache HttpClient Persistent Mobile Foundation uses Apache HttpClient internally. If you add an Apache HttpClient instance as a dependency to a Java adapter, the following APIs do not work properly in the adapter: AdaptersAPI.executeAdapterRequest, AdaptersAPI.getResponseAsJSON, and AdaptersAPI.createJavascriptAdapterRequest. The reason is that the APIs contain Apache HttpClient types in their signature. The workaround is to use the internal Apache HttpClient but to change the dependency scope in the pom.xml to provided.
- Bouncy Castle cryptographic library Persistent Mobile Foundation uses Bouncy Castle itself. It might be possible to use another version of Bouncy Castle in the adapter, but the consequences need to be carefully tested: sometimes, the PMF Bouncy Castle code populates certain static Singleton fields of the javax.security package classes and might prevent the version of Bouncy Castle that is inside an adapter from using features that rely on those fields.
- Apache CXF implementation of JAR files CXF is used in the PMF JAX-RS implementation, thus preventing you from adding Apache CXF JAR files to an adapter.
Application Center mobile client: refresh issues on Android 4.0.x
- Android 4.0.x WebView component is known to have several refresh issues. Updating devices to Android 4.1.x should provide a better user experience.
- If you build the Application Center client from sources, disabling the hardware acceleration at the application level in the Android manifest should improve the situation for Android 4.0.x. In that case, the application must be built with Android SDK 11 or later.
FIPS 140-2 feature limitations
The following known limitations apply when you use the FIPS 140-2 feature in Persistent Mobile Foundation:
- This FIPS 140-2 validated mode applies only to the protection (encryption) of local data that is stored by the JSONStore feature and protection of HTTPS communications between the PMF client and the PMF Server.
- For HTTPS communications, only the communications between the PMF client and the PMF Server use the FIPS 140-2 libraries on the client. Direct connections to other servers or services do not use the FIPS 140-2 libraries.
- This feature is only supported on the iOS and Android platforms.
- On Android, this feature is only supported on devices or simulators that use the x86 or armeabi architectures. It is not supported on Android using armv5 or armv6 architectures. The reason is because the OpenSSL library used did not obtain FIPS 140-2 validation for armv5 or armv6 on Android. FIPS 140-2 is not supported on 64-bit architecture even though the PMF library does support 64-bit architecture. FIPS 140-2 can be run on 64-bit devices if the project includes only 32-bit native NDK libraries.
- On iOS, it is supported on i386, x86_64, armv7, armv7s, and arm64 architectures.
- This feature works with hybrid applications only (not with native applications).
- For native iOS, FIPS is enabled through the iOS FIPS libraries and is enabled by default. No action is required to enable FIPS 140-2.
- The use of the user enrollment feature on the client is not supported by the FIPS 140-2 feature.
- The PMF Application Center client does not support the FIPS 140-2 feature.
For more information about this feature, see FIPS 140-2 support.
Migration to Persistent Mobile Foundation server
When you apply an update/fix or migration to PMF for Application Center or PMF Server, manual operations are required, and you might have to shut down your applications for some time.
JSONStore supported architectures
For Android, JSONStore supports the following architectures: ARM, ARM v7, and x86 32-bit. Other architectures are not currently supported. Trying to use other architectures leads to exceptions and potential application crashes. JSON Store is not supported for Windows native applications.
PMF Operations Console
Analytics Page
Response times in the Analytics page of the PMF Operations Console depend on several factors, such as hardware (RAM, CPUs), quantity of accumulated analytics data, and Persistent Mobile Foundation Analytics clustering. Consider testing your load before you integrate Persistent Mobile Foundation Analytics into production.
Nested projects can result in unpredictable results with the CLI
Do not nest projects inside one another when using the Persistent Mobile Foundation Command Line Interface (CLI). Otherwise, the project that is acted upon might not be the one that you expect.
Previewing Cordova web resources with the Mobile Browser Simulator
You can preview your web resources with Mobile Browser Simulator, but not all PMF JavaScript APIs are supported by the simulator. In particular, the OAuth protocol is not fully supported. However, you can test calls to adapters with WLResourceRequest. For more information, see Previewing Cordova web resources with the Mobile Browser Simulator.
Physical iOS device required for testing extended app authenticity
The testing of the extended app authenticity feature requires a physical iOS device, because an IPA cannot be installed on an iOS simulator.
Support for push notification
Non-secured push is supported in Cordova (on iOS and Android).
Updating the cordova-ios platform
To update the cordova-ios platform of a Cordova app, you must uninstall and reinstall the platform by completing the following steps:
- Navigate to the project directory for the app by using the command-line interface.
- Run the cordova platform rm ios command to remove the platform.
- Run the cordova platform add ios@version command to add the new platform to the app, where version is the version of the Cordova iOS platform.
- Run the cordova prepare command to integrate the changes.
The update fails if you use the cordova platform update ios command.
WKWebView support for iOS Cordova applications
App notifications and Direct Update features might not work well in iOS Cordova apps with WKWebView. This limitation is due to the defect file:// url XmlHttpRequests are not allowed in WKWebViewEgine in cordova-plugin-wkwebview-engine. To circumvent this issue, run the following command in your Cordova project. cordova plugin add https://github.com/apache/cordova-plugins.git#master:wkwebview-engine-localhost Executing this command would run a local web server in your Cordova application, you can then host and access your local files instead of using the file URI scheme (file://) to work with local files.
The cordova-plugin-statusbar does not work with Cordova application loaded with cordova-plugin-pmf
cordova-plugin-statusbar will not work with Cordova application loaded with cordova-plugin-pmf To circumvent this issue, the developer will have to set CDVViewController as the root view controller. Replacing the code snippet in the wlInitDidCompleteSuccessfully method as suggested below in the MFPAppdelegate.m file of the Cordova iOS project.
Existing code snippet:
(void)wlInitDidCompleteSuccessfully
{
UIViewController* rootViewController = self.window.rootViewController;
// Create a Cordova View Controller
CDVViewController* cordovaViewController = [[CDVViewController alloc] init] ;
cordovaViewController.startPage = [[WL sharedInstance mainHtmlFilePath];
// Adjust the Cordova view controller view frame to match its parent view bounds
cordovaViewController.view.frame = rootViewController.view.bounds;
// Display the Cordova view [rootViewController addChildViewController:cordovaViewController];
[rootViewController.view addSubview:cordovaViewController.view];
[cordovaViewController didMoveToParentViewController:rootViewController];
}
Recommended code snippet with workaround for the limitation:
(void)wlInitDidCompleteSuccessfully
{
// Create a Cordova View Controller
CDVViewController* cordovaViewController = [[CDVViewController alloc] init] ;
cordovaViewController.startPage = [[WL sharedInstance] mainHtmlFilePath];
[self.window setRootViewController:cordovaViewController];
[self.window makeKeyAndVisible];
}
Raw IPV6 address not supported in Android applications
During the configuration of mfpclient.properties for your native Android application, if your PMF Server is on a host with IPV6 address, then use a mapped host name for the IPV6 address to configure the wlServerHost property in mfpclient.properties. Configuring the wlServerHost with raw IPV6 address fails the application’s attempt to connect to the PMF Server.
Deprecations
Windows
Deprecating support for all versions of Windows and Windows mobile.
Xamarin
Deprecating support for all versions of Xamarin.
▲