Rover iOS SDK
NOTE: If you are currently using Rover SDK 1.x, please see the latest 1.x release README.
The Rover SDK is a collection of Cocoa Touch Frameworks written in Swift. Instead of a single monolithic framework, the Rover SDK takes a modular approach, allowing you to include only the functionality relevant to your application. The SDK is 100% open-source and available on GitHub.
Install the SDK
The recommended way to install the Rover SDK is via Cocoapods.
The simplest approach is to specify
Rover as a dependency of your app's target which will add all required and optional subspecs to your project.
target 'MyAppTarget' do pod 'Rover', '~> 2.1.0' end
Alternatively you can specify the exact set of subspecs you want to include.
target 'MyAppTarget' do pod 'Rover/Foundation', '~> 2.1.0' pod 'Rover/Data', '~> 2.1.0' pod 'Rover/UI', '~> 2.1.0' pod 'Rover/Experiences', '~> 2.1.0' pod 'Rover/Notifications', '~> 2.1.0' pod 'Rover/Location', '~> 2.1.0' pod 'Rover/Bluetooth', '~> 2.1.0' pod 'Rover/Debug', '~> 2.1.0' end
Please continue onwards from https://developer.rover.io/ios/.
Help us keep the lights on
v2.1.2 - Oct 12, 2018
- Detecting build environment crashes in some environments #317
v2.1.1 - Oct 4, 2018
This patch fixes four important bugs found in the 2.1.0 release:
- When opening the app from tapping a push notification, the SDK was inadvertently tracking an "influenced open". This has adverse affects on campaign reporting.
- A change in iOS 12 caused some text in Experiences to have an extra empty line.
- Experiences that included a QR code would crash on some devices.
- The RoverTicketmaster module was not shared which prevented it from being installed via Carthage.
There are no breaking changes in this release. If you are currently running v2.1.0 it is highly recommended you update to 2.1.1.
v2.1.0 - Oct 1, 2018
With 2.1.0 the Rover iOS SDK will no longer be making any breaking changes until 3.x. The primary focus of the 2.1.0 release was improvements to the location module, Xcode 10/Swift 4.2 support and a new and improved sync mechanism.
- Through the use of conditional compilation, the SDK now supports Xcode 9 and Xcode 10 as well as Swift 4.1 and 4.2.
UserInfoclass was renamed to
Loggerservice has been removed and the SDK now makes extensive use of the Apple's built-in logging framework with
- CocoaPods subspec names have changed. They no longer include the "Rover" prefix. E.g. "Rover/RoverExperiences" is now "Rover/Experiences". This will only affect your app if you were explicitly targeting subspecs.
- The default subspec will no only include the core modules (Experiences, Notifications, Location and Debug). Previously the RoverBluetooth module was included by default. If you want to include it you will need to add it explicitly. See the Installation and Initialization guide.
- CocoaPods bundles all modules into a single framework which was previously named Rover. This caused naming collisions with the
Roverclass and prevented the ability to namespace ambiguous Rover types. E.g. the Rover
Notificationclass often conflicts with the Apple
Notificationclass when you include both the Rover SDK and
UserNotificationsframework in your app. For this reason, the Cocoapods module name has changed from
RoverKit. See the Installation and Initialization guide.
SateFetcherservice has been replaced with a new
SyncCoordinator. The API is similar but has changed slightly. Most notably, the
SyncCoordinatorno longer "auto-fetches" when the app enters the foreground. The developer must enable this functionality manually in their app delegate. This is slightly less convenient but removed hidden "magic" and makes the sync process more flexible and customizable. See the Syncing Data guide for details on how to setup the new
- All events tracked through the Rover
EventQueuenow include the last known location in the context along with a timestamp of when the location was detected and a reverse-geocoded address.
Blockmodels now include the name, tags and custom keys assigned to them in the Experience app.
- The "Block Tapped" event now includes the
Rowin the event attributes.
- The location module has been completely rewritten and offers a much faster, more powerful approach to monitoring beacons and geofences. All objects created in the Proximity app are now synced to the device through the
SyncCoordinatorand stored on disk using Core Data. This allows realtime region monitoring updates, instantaneous event reporting and an API for developers to access the current nearby beacons and enclosing geofences.
LocationManagerservices have been removed and replaced with the
- The app is now responsible for instantiating its own
CLLocationManagerand implementing its delegate. Similar to the changes with
SyncCoordinatorthis is slightly less convenient but removes "magic" and increases flexibility.
- See the Location guide for details on how to integrate the new Location module.
- A new (optional) Ticketmaster module is included in the SDK for syncing Ticketmaster profile data to Rover. It is designed to work out of the box with the Ticketmaster Presence SDK without requiring a dependency on any specific version.
- See the inline markup documentation on the new
TicketmasterAuthorizerservice for details on how to integrate it.
v2.0.0 - Sep 7, 2018
Rover iOS SDK 2.0.0
2.0 is complete redesign of our mobile SDK. Read more at our new documentation site.
- Modular architecture providing an “al a carte” developer experience – only add the Rover modules that are relevant to your application
- Dependency Injection framework provides an incredible amount of flexibility and customization options
- Much improved logger with configurable threshold (e.g. warning vs errors).
- Ability to opt-in to testing from the device
- New data points captured about devices:
- App badge icon
- Carrier name
- Cellular and wifi status
- Location authorization status (always vs when in use)
- Radio (LTE vs 3G etc.)
- Screen resolution
- New events captured:
- Notification Center “Inbox” views
- Push token changes (added, updated and removed)
- App installs and updates
- Notification Opens and Influenced Opens
- Notification Deletions
- Bluetooth enable and disable
- More accurate experience and screen average view time
- Vastly improved network performance
- Events queue locally on disk and flush periodically reducing network requests and thus battery life
- Background fetch support – refresh “inbox” while app is in the background
- Smoother experience scrolling
- Faster experience loading
- Experience images fade-in when loaded
- Buttons have a subtle tap effect
- “Stretchy headers”
- Notification Center (previously known as “Inbox”)
- Offline support
- Delete notifications
- Mark as read
- Thumbnail images
- Turn-key setup and completely customizable
v2.0.0-beta.3 - Aug 31, 2018
- Harmonized rendering of barcodes across both Android and iOS.
- Resolved several minor rendering issues with Experiences.
- Improved the Analytics events such that may be more readily queried in BigQuery.