Migration guides - infobip/mobile-messaging-sdk-ios GitHub Wiki

Migration guide (from 14.x to 15.x)

Starting from version 15.0.0, the Notification Service Extension has been separated into a standalone module called MobileMessagingNotificationExtension. This lightweight module has zero dependencies on the main MobileMessaging SDK, resulting in a significantly smaller extension binary and improved extension reliability.

What changed

  • The extension no longer imports the full MobileMessaging SDK. Instead, it uses the standalone MobileMessagingNotificationExtension module.
  • The mmine Ruby Gem (version 2.0.0+) now generates extension code that imports MobileMessagingNotificationExtension instead of MobileMessaging.
  • The --application-code and --static-linkage flags have been removed from mmine — they are no longer needed.

Migration steps

1. Update the SDK

CocoaPods: Update your Podfile to use the latest SDK version, then run pod update.

Swift Package Manager: In Xcode, go to File > Packages > Update to Latest Package Versions.

2. Update mmine

$ sudo gem install mmine

Verify you have version 2.0.0 or later:

$ gem list mmine

3. Remove the old Notification Service Extension

In Xcode:

  1. Select the MobileMessagingNotificationServiceExtension target in your project navigator.
  2. Delete the target (select the target, press Delete or right-click > Delete).
  3. Remove all files associated with the extension group: NotificationService.swift, Info.plist, and the .entitlements file.
  4. If using CocoaPods, remove the extension target entry from your Podfile (the block containing MobileMessagingNotificationExtension or inherit! :search_paths), then run pod deintegrate followed by pod install to clean up stale build settings.

4. Re-integrate the extension

Follow the Delivery improvements and rich content notifications guide to set up the new extension using mmine integrate.

Custom NotificationService.swift

If you have customised your NotificationService.swift (e.g. modifying notification content, handling badge counts, or supporting multiple push providers), you will need to update your code after re-integration:

Old (14.x) New (15.x)
import MobileMessaging import MobileMessagingNotificationExtension
MM_MTMessage.isCorrectPayload(userInfo) MobileMessagingNotificationServiceExtension.isCorrectPayload(userInfo as? [String: Any] ?? [:])

The MobileMessagingNotificationServiceExtension.didReceive and serviceExtensionTimeWillExpire APIs remain the same.

Migration guide (from 14.3.x to 14.4.x)

From version 14.4.0, values left as nil in MMUserIdentity are ignored in the personalize method. In order to nullify them, the method saveUser must now be used instead.

Migration guide (from 14.1.x to 14.2.x)

At version 14.2.0, the open class AnimatedImageView was renamed to MMAnimatedImageView to avoid collision with Kingfisher dependency on ObjC bridges.

Migration guide (from 13.x to 14.x)

At version 14.0.0, minimum deployment target changed to iOS 15.

Migration guide (from 13.10.x to 13.11.x)

From this version, the SDK stores application code, used for API authorization, securely in the KeyChain. Because of this MobileMessaging.privacySettings.applicationCodePersistingDisabled property has been removed from PrivacySettings and is not needed anymore.

Migration guide (from 13.6.x to 13.7.x)

From this version, the JWT error codes are remapped to include mm_code and mm_message, the codes are JWT_TOKEN_STRUCTURE_INVALID and JWT_TOKEN_EXPIRED.

Migration guide (from 12.x to 13.x)

At version 13.0.0, minimum deployment target changed to iOS 13.

Changes in documentation

Basic In-App notifications renamed to Mirror Push notifications, Full featured in-app notifications renamed to In-App messages.

Migration guide (from 12.15.x to 12.16.x)

In version 12.16.0 of the SDK, the following API change was made to the willPresentInForeground method of the MMMessageHandlingDelegate protocol:

- @objc optional func willPresentInForeground(message: MM_MTMessage?, notification: UNNotification, withCompletionHandler completionHandler: @escaping (MMUserNotificationType) -> Void)
+ @objc optional func willPresentInForeground(message: MM_MTMessage?, notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void)

This change allows the use of the UNNotificationPresentationOptions.list option introduced in iOS 14. For a detailed implementation example check How to display messages when app is running in the foreground?

Migration guide (from 11.x to 12.x)

If you were using previous versions of WebRTCUI, you need to replace your setup with the new WebRTC Configuration and check the new identity modes for enabling calls. Please check the dedicated WebRTC migration guide for more details.

Migration guide (from 10.x to 11.x)

In-App messages feature is supported since 11.0.0 version. This feature is disabled by default, in order to enable it check how to enable In-App messages.

Migration guide (from 9.x to 10.x)

At version 10.0.0 minimum deployment target changed to iOS 12.