- Notification tracking change: Track notification experience delivery and notification tap as separate events. (no longer 100% conversion rates for Message Experience Type).
Fixes and improvements
- Added additional protection against a potential crash after calling reverseGeocodeLocation:preferredLocale:completionHandler: method.
This method is available since iOS 11.0, despite of that, some iOS 11+ devices will anyway crash with a “unrecognized selector sent to instance”.
(crash is now handled properly).
- AFNetworking could potentially return a 200 OK response while calling a “failure” block”, generating a crash. Added code to properly handle this scenario.
- bugfix: Do not attempt to show PopUpView if the parent View is nil.
- bugfix: WiFiOnly Switch was activated after muting SDK Notifications
Fixes and improvements
- When initing the SDK without MOCAConfig.plist, load the default device api url as well.
- Added a new setting to mute all campaign notifications. Activate it by calling [MOCA muteNotifications:YES]
Fixes and improvements
- Fixed a bug that completely shut down proximity services instead of just disable proximity drivers making impossible to restart it afterwards.
Fixes and improvements (Internal)
- Fixed segmentation for PurchaseHistory, and other LazyCollections.
- Added doesNotContain Operator
- Synchronize Instance serialization to avoid mutate collections while fast enumerating.
- Add additional checks in the RegionManager Region Operations to ensure weak references are still valid.
- Add additional checks in the ProximitySync isEqualsTo method.
- Added YOUR_APP_KEY_HERE check. Throw an exception if this happens.
- Added location to custom events
- Added location to Campaign events
Fixes and improvements
- Fixed a bug that reported wrong result of UIBackgroundFetch
- JourneyManager: Do not process EventBus messages during initialization
- PermissionHandler: Avoid iterating listeners while fast enumerating them.
- Added validations for certain non-ISO country codes returned by iOS.
- JourneyManager subscribes once per key (instead of once per experience).
- EventBus: Added an additional mutex to event buffer
- EventBus: Added additional mutex for other critical sections.
- EventBus: Use Async Queue to dispatch events always (not only while dispatching buffer events)
- Privacy enhancement: Send the device name as a md5 hash.
Fixes and improvements
- Improved handling of bluetooth radio states.
- Save user automatically in moca cloud.
- Added instance upload on background fetch
- Do not track PlaceMarks if do not have at least country.
- Improved local push logging for Regions
- New Event OnMocaReady allows to perform tasks once the SDK has been completely initialized.
- AppTrigger is now a specialization of AutomationTrigger
- Triggable tags (change on a Tags trigger evaluation of Variants / Campaigns / Experiences).
- Support for DWELL triggers and DELAYED Triggers.
- New Triggable event: on location change
- New Segment variable: location.age, it returns the location age in seconds.
- Segmentation engine: ability to compare objects with or without case sensitivity
- Segmentation engine: Support for NotIn operator.
- AppInstall trigger is valid during the first 3 sessions, not only the first time.
- Visit tracking returns placemarks names always in english.
- Minor code formatting improvements.
- JourneysManager: Avoid mutating collections while fast enumerating.
- Add tag to current profile instead of instance directly.
- RegionGroup proximity Tracking
- Campaign Attribution tracking for RegionGroups
- Mutex on the Event Bus.
- Added new iPhone model names.
- User AutoLogin if still logged in.
- Tag serialization works the same way than in Android.
- Fixed bug in search view verb string.
- Segmentator now compares Strings with Numbers correctly.
- Region Group remembers its last triggered child region.
- Segmentator supports count for ViewedItems.
- Synchronize CLRegions in a smarter way, so regions are monitored again ONLY if they are not being monitored yet.
- Fixed a bug that prevented the moca driver from starting correclty when passing from “Denied” Location permissions to any other Location permission.
- Improved debug logging with local push.
- Improved handling of Region Group events
- Added optional logging via local push notifications. Useful to debug SDK location engine. ( Use CUSTOM_DEBUG_PUSH TRUE in the mocaconfig.plista)
- Fixed a bug that could prevent a tag from being loaded from local storage.
- Improved tag loading code to take into account `NSNull` values.
- Only track exit beacon events when the state has transitioned from inside to outside (and not Unknown -> Outside), so no more “fake” exit events are sent. This also solves a performance issue when a beacon Region contains hundreds of beacons.
- Move de-serializing data work off the UI Thread.
- Background fetch callback could be called more than once by the CRM Sync client if the data was not processed correctly.
- Memory handling improvements.
- Improved MOCA Event Bus memory management to fully avoid memory leaks.
- MOCA Event bus process events publishing asynchronously using GCD.
- Improved OnEnter Trigger logic to be more tolerant to beacon exits. This greatly increases the detection confidence for dwell triggers with bluetooth beacons.
- Supports the INSTALL_EVENT automation trigger
- Automatically handles custom scheme links so the app itself invokes them and closes the webview afterwards.
- Parse delayMs in location group trigger
- remove PUT calls when saving user
- Load cart in user object
- Expose Cart in the MOCA inteface
- Use MOCASerializableObjects for persistance in the ItemSet class.
- Change all PUT methods to POST.
- Unit tests of new Segment Lexer
- Bugfixes: Fixed an npe generated while loading ViewItem from storage
- Added missing header to Cloud Tags Sync
- Fixed the verb used in the “rate” event
- Items added to the cart using the update method are now persisted correctly
- Custom event tracking builder accepts null properties (and discards them)
- Support for triggers on dwell. (backend sync api 2.1)
- Improved exit beacon handling. Beacon is treated as “outside” after ~15 seconds of not having it in range.
- Experiences are always a notification first, and if user taps on it, it shows the associated content. On iOS 9, the behavior remains the same.
- Included additional protections against nil system properties reported by iOS.
- Added additional checks in NAO Beacon configuration.
- Remote notifications push token is no longer required for proximity-only features.
- MOCA Indoor Client is restarted after receiving a valid NAO key. This caused the indoor clients to not to return location objects if they were created inmediately after iniitalizing the app for the first time.
- Proximity NAO Clients starts with low power mode by default. This setting can be changed in the config by adding the CUSTOM_NAO.PROXIMITY_POWER_MODE = HIGH key-value in the MOCA SDK config.
- Added a new Indoor Client call in order to upload logs to NAO Cloud: - (void) uploadLogs;
- Check incoming notifications are MOCA notifications before Manage them. This improves the compatibility with 3rd party SDKs.
- Added the API method [MOCA isMocaNotification:notification] which unifies the checking of a local or remote notification.
- Full support for the UNNotification API. UILocalNotification still supported for devices < iOS 10
- Fixed a visual issue in the iPhone X that caused that was difficult to press the X close button of the experiences.
- Added parameter in the sync call to inform the backend about the requesting operating system
- Fixed a bug that caused segments in experiences to not to be parsed correctly.
v2.3.3 / v2.3.3n
- Allow set the location permission strategy property in the Config object.
- Check if beacon setting is enabled before starting to range beacons
- Added an error message when trying to create an indoor client without the NAO Dependency available.
- Fixed a bug in the Indoor Tracker (indoor analytics) that prevented the module from starting.
- Sent the entity id in the url when performing the entity call.
- Full support for iOS new location model permissions
- In the geo events, the permission status is also tracked
- The app status (background, foreground) is tracked in the geo events
- bugfix: Solved an issue that could cause a user to not to receive a push notification (with content-available: 1) after opening app the application
- All UI method calls are done from the Main Thread.
- Support for beacon detection in foreground with the "When in use" location permission. (before this version, beacons always needed the "Always" permission)
- Restored MOCAExperienceRepeatImmediately. It is needed for custom actions.
- Enhanced: Imrpoved response time of OnExit Geofence.
- Enhanced: Ensure all UI calls are done in the Main thread.
- Fixed: bitcode support
- Added a new property needed for a future A/B testing feature.
- Added a method to get the default action delegate [[MOCA ProximityService] actionDelegate]
- Rename a symbol in the Apple reachability class to avoid conflicts with 3rd party libs