Migration to Swift SDK
Netmera is introducing a significant update to its mobile SDKs. To align with modern iOS development practices, the Objective-C SDK will be officially designated as legacy in October 2026. All customers are advised to migrate to the Swift SDK, which offers:
Simplified setup and maintenance
Modular, lightweight architecture
Support for modern iOS capabilities (Live Activities, Deferred Deep Linking, WhatsApp)
Enhanced reliability with offline queueing
Advanced user preference and profile management
Docs:
1) Installation & Project Setup
1.1 Remove Former SDK
Remove CocoaPods or manually added frameworks referencing the Objective-C SDK.
Run
pod deintegrateif previously using CocoaPods and clean the build folder.
1.2 Install New Swift SDK (Recommended: SPM)
In Xcode, navigate to Project → Package Dependencies → +.
Add the Swift package URL:
https://github.com/Netmera/swift-sdk.Select only the required modules to reduce app size: Core, Notifications, Analytics, Location, Inbox, Advertising ID, Live Activities.
1.3 Configuration File
Add or update Netmera-Config.plist as required by the new SDK.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>sdk_params</key>
<dict>
<key>api_key</key>
<string>your_api_key</string>
</dict>
</dict>
</plist>Ensure environment keys, base URLs (for on-prem deployments), and app group identifiers (for media and carousel push) are configured. For details: Further Plist Configurations.
2) Choosing Modules & Imports (Swift SDK)
Import only required modules to minimize app size and improve build times.
NetmeraNotification
Push permissions, token, delegate, deep links
App
NetmeraAnalytic
Send events (+ optional autotracking)
App
NetmeraAnalyticsAutotracking
Automatic screen transition and action tracking
App
NetmeraNotificationInbox
Push Inbox list/detail
App
NetmeraLocation
Location features
App
NetmeraGeofence
Geofence features
App
NetmeraAdvertisingId
IDFA/IDFV access
App
NetmeraLiveActivity
ActivityKit live activities
App (iOS 16.1+)
NetmeraNotificationServiceExtension
Rich/Media push processing
Notification Service Extension
NetmeraNotificationContentExtension
Custom push UI, Carousel & Slider Push
Notification Content Extension
NetmeraCore is imported automatically with any other module.
3) Initialization
Former iOS SDK
// AppDelegate.swift
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
Netmera.start()
Netmera.setAPIKey("YOUR_CLIENT_API_KEY")
Netmera.setLogLevel(NetmeraLogLevel.debug)
return true
}New iOS SDK (Swift)
// AppDelegate.swift
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
Netmera.initialize()
Netmera.setLogLevel(.debug)
return true
}4) Push Notifications
4.1 Permission & Token Flow
Former iOS SDK
Netmera.requestPushNotificationAuthorization(forTypes: [.alert, .badge, .sound]) New Swift SDK
Netmera.requestPushNotificationAuthorization(for: [.alert, .badge, .sound])4.2 NetmeraPushObject Migration
In the new Swift SDK, NetmeraPushObject has been replaced with NetmeraBasePush.
NetmeraBasePush provides the same functionality, including access to standard push fields (title, body, deep link, send time) and any custom key–value parameters defined in the Netmera dashboard.
If your previous implementation used NetmeraPushObject, simply update your parsing logic to use NetmeraBasePush.
5) User & Attributes
Netmera.updateUser() is deprecated. Use Netmera.identifyUser(user) for identifiers and Netmera.updateUserProfile(userProfile: userProfile) for profile attributes.
Action Required for Custom Profile Attributes
Update custom profile attributes using the snippet generated in the Netmera Dashboard. Developers → Profile Attributes → User Class → iOS → Swift (New) → copy the snippet and replace the existing user class.
Array-type profile attributes can now be updated incrementally (set / add / remove / unset) to avoid sending the entire array.
More details → User & Attributes
6) Events (Analytics)
Action Required for Custom Events
Standard events remain unchanged.
For custom events, regenerate and replace event code from Developers → Events in the panel. Select the event → Code → iOS → Swift (New) and update the project with the snippet.
Netmera SDK Function Mapping (Obj-C → Swift)
NetmeraCore
[Netmera start];
Netmera.initialize()
SDK init
[Netmera updateUser:user];
Netmera.identifyUser(user)
IDs (userId, email, msisdn)
[Netmera updateUser:user];
Netmera.updateUserProfile(userProfile: userProfile)
Profile attributes
[Netmera startDataTransfer]; / [Netmera stopDataTransfer];
Netmera.setDataTransferEnabled(true)
Data transfer control
–
Netmera.isNetmeraRemoteMessage(payload:)
Detect Netmera push payload
[Netmera setAllowedEmailSubscription:YES];
Netmera.setEmailPermission(isAllowed: true)
Email subscription
[Netmera isAllowedEmailSubscription]
Netmera.getEmailPermission { ... }
Get email permission
–
Netmera.setSmsPermission(isAllowed: true)
SMS subscription
–
Netmera.getSmsPermission { ... }
Get SMS permission
–
Netmera.setAdditionalRequestHeaders(dict)
Add request headers
NetmeraAdvertisingId
Netmera.requestTrackingAuthorization()
Netmera.requestAdvertisingAuthorization()
Ad ID consent
NetmeraNotification
[Netmera setEnabledPopupPresentation:YES];
Netmera.setPopupPresentationEnabled()
Popup push
Netmera.setEnabledInAppMessagePresentation()
Netmera.setInAppMessagePresentationEnabled()
In-app messages
[Netmera setEnabledReceivingPushNotifications:YES];
Netmera.setReceivingPushNotificationsEnabled()
Push receiving
[Netmera isEnabledReceivingPushNotifications]
Netmera.isReceivingPushNotificationsEnabled()
Push status check
Netmera.requestPushNotificationAuthorizationForTypes:
Netmera.requestPushNotificationAuthorization(for:)
Push permissions
Netmera.setUserCategoryPreferenceWithCategoryId:
Netmera.setUserCategoryPreference(categoryId:categoryEnabled:){...}
Category preference
NetmeraNotificationInbox
NetmeraInboxFilter + fetchInboxUsingFilter
NetmeraInboxManager + inbox(callback:)
Fetch inbox notifications
fetchInboxCount(with:)
inboxManager?.count(for:)
Inbox count by status
fetchNextPageWithCompletionBlock
inboxManager?.nextPage(callback:)
Pagination
updateStatus:forPushObjects:
inboxManager?.updateStatus(status, for: [object]) { ... }
Update status for selected objects
updateStatus:forAllWithCompletion:
inboxManager?.updateStatusForAllPushObjects(status) { ... }
Bulk status update
Last updated
Was this helpful?