iOS Mobile SDK v25.7.0
Compatibility Overview
Component | Version |
---|---|
Minimum iOS Version | 16.0 |
Minimum watchOS Version | 9.0 |
Built Using Xcode | 16.2 |
Swift Version | 5 |
Swift Tools Version | 5.10 |
Package Manager | Swift Package |
Q2MobileApp | 25.7.0 |
Q2DevApp | 25.7.0 |
Q2MobileApp Dependencies
Library | Version |
---|---|
Firebase Messaging | 11.5.0 |
Bugsnag | 6.30.1 |
Pendo | 3.6.3 |
Improvements
Q2MobileApp now supports explicit module targeting for push notifications, enabling multiple modules to independently process and render rich content notifications.
Partner Integration Requirements
- Each module must expose a public identifier string by implementing
PushSenderProvider
.
- Create PushSender with unique identifier.
extension PushSender {
static var moduleSender: Self {
PushSender(id: "com.q2.mobile.module.{your-unique-identifier}")
}
}
Changes Needs to be made at following places if applicable for your use case.
Possible Change: If your module class inherits from Q2ModuleBase
then override as
follow and uses one or more methods of PushLifecycleModule
.
public class YourClass: Q2ModuleBase {
public override static var sender: PushSender? {
return .moduleSender
}
...
}
Possible Change: If your module requires push content extension, implement following
static property in type confirming to PushContentExtensionModule
public class YourPushContentExtensionClass: PushContentExtensionModule {
public static var sender: Q2ModuleInterfaces.PushSender? {
return .moduleSender
}
...
}
Possible Change: If your module requires push service extension, then implement
following static property in type confirming to PushServiceExtensionModule
public class YourPushServiceExtensionClass: PushServiceExtensionModule {
public static var sender: Q2ModuleInterfaces.PushSender? {
return .moduleSender
}
...
}
-
Custom Payload Key (
sender
)- Partners can now include a
"sender"
key in the notification payload to explicitly indicate Q2MobileCore which module should handle the notification. - PushSender identifier should be unique and needs to be used as
sender
when you send your notification as specified below.
Example Payload:
{
"aps": {
"alert": {
"title": "Title",
"subtitle": "Subtitle",
"body": "Body"
},
"mutable-content": 1
},
"sender": "com.q2.mobile.module.{your-unique-identifier}"
} - Partners can now include a
Runtime Resolution Logic
- MobileCore reads the sender value from the payload.
- If a matching module is found, only that module handles the notification.
- If no match is found or the key is missing, fallback to legacy behavior (first available module).
Applies To
- PushServiceExtensionModule (e.g., image downloading, payload mutation)
- PushContentExtensionModule (e.g., custom UI rendering)
- PushLifecycleModule (e.g. when notification is received.)