Skip to main content
SDKsiOS

Versioning and payload contract

SemVer policy for the MotiSig iOS SDK and the rich image payload contract.

Image payload contract

MotiSigRichPushHandler resolves the first non-empty match from:

  1. _motisig.imageUrl / _motisig.image_url / _motisig.image (MotiSig AI canonical)
  2. _richContent.image (Expo push relay — what you get when sending via the Expo push API)
  3. fcm_options.image (FCM relay)
  4. Top-level image / imageUrl / image_url (host-app convenience)

A single server payload that uses _motisig.imageUrl lights up the banner image wherever the right delivery setup is in place. See Rich notification images.

What changed in 1.0.1

  • launchOptions on MotiSig.initialize (UIKit) — cold-start push taps from launchOptions[.remoteNotification] are handled during init.
  • Click reliability — persistent FIFO queue, deduplication, and exponential-backoff retries for POST /track/click.
  • SwiftUI — document @UIApplicationDelegateAdaptor + AppDelegate init pattern in Getting started.

Full release notes: CHANGELOG.md.

Versioning

The iOS SDK follows semantic versioning. Changes considered breaking:

  • Removing or renaming a public symbol exported from MotiSig.
  • Changing a method signature in MotiSigNotificationListener or MotiSigRichPushHandler.
  • Adding a new required initializer parameter to MotiSig.initialize or to a public model.
  • Renaming or removing a MotiSigError case.
  • Changing the canonical push payload keys (_motisig.imageUrl, messageId, etc.) on the wire.

Additive changes (new methods, new optional parameters, new MotiSigNotification fields) are minor or patch.

Release notes: CHANGELOG.