Background
iOS 13 was officially released on September 20, 2019. During the testing of the iOS 13 beta and official versions, we found that some behaviors of the system changed. Therefore, you must perform app adaptation before using it, otherwise problems such as functional exceptions and crashes may occur.
Before the mPaaS adaptation, the major impact on the mPaaS SDK built by Xcode 10 on iOS 13 devices is as follows. Since iOS 13 optimizes app startup and modifies the mirror loading mechanism, the system category may overwrite the category methods defined in the SDK. As a result, custom methods cannot return expected results.
Important: As the basic library, the mPaaS version 10.1.60.26 and later have been adapted to iOS 13 built under Xcode 11.
Upgrade the SDK or components
Upgrade based on CocoaPods
Install the latest SDK of version 10.1.60 by completing the following steps.
Check that the mPaaS version is 10.1.60 in Podfile.
Run the command
pod mpaas update 10.1.60
.If an error is returned, run the command
pod mpaas update --all
to update the plug-in and then rerun the previous command.Run the
pod install
command.
API changes
The mPaaS component added an adaptation layer in version 10.1.32 and later. We recommend that you use the API of the adaptation layer after upgrading the SDK. For details, see the following upgrade instructions for different components:
Notes:
Pay special attention to the directory and info.plist configuration changes for mPaaS components in the project.
We strongly recommend that you modify the code and use middle-layer (adapter) methods instead of directly using underlying methods, because certain underlying methods may be modified or discarded in future versions. You may need to take lots of time adapting them in future updates if you continue to use them.
Change of the directory structure
Among the component category directories and files under the MPaaS
directory of the project, onlyAPMobileFramework
and mPaas
are kept after the upgrade. All the other directories, such as APRemoteLogging
, is automatically removed. If there are any custom files saved under these directories, you need to back up them in advance. For details of the directory structure, see mPaaS directory structure.
Change of Info.plist
The following figure shows the related mPaaS fields inserted in the Info.plist file of the project before the upgrade.
In 10.1.32 and later versions, only the Product Version
field is required. After the baseline is upgraded, the plug-in automatically removes the Product ID
, mPaaS
, and mPaaSInternal
fields. If the plug-in fails to remove these fields, you need to delete them manually. The following figure shows the fields after the upgrade.
Note: Do not delete the Product Version
field when you delete the fields manually.
Handle custom libraries
The components in version 10.1.60 incorporate customization requirements. However, if your dependencies include custom libraries, you must take the following actions to handle them accordingly for security reasons.
If you upgraded the SDK from an earlier version (such as 10.1.20) to 10.1.60, you may need to customize custom libraries again based on the new version. To do this, submit a ticket or contact mPaaS technical support personnel.
If the SDK version is 10.1.60, update certain components. See List of libraries adapted to iOS 13 updates to check whether your custom libraries are contained in the list.
If no, you can continue to use these custom libraries.
If yes, you may need to customize them again. To do this, submit a ticket or contact mPaaS technical support personnel.
List of libraries adapted to iOS 13 updates
mPaas
MPDataCenter
MPPushSDK
APMultimedia
BEEAudioUtil
BeeCapture
BeeCityPicker
BeeMediaPlayer
BeePhotoBrowser
BeePhotoPicker
NebulaAppBiz
NebulaBiz
NebulaSecurity
NebulaKernel
NebulaSDKPlugins
NebulaSDK
NebulaConfig
NebulaTinyAppDebug
NebulaNetwork
TinyAppCommon
APConfig
AntUI
MPPromotion
BeeLocation
MPMpaaSService
TinyAppService
AMap