- The
Radar.searchPlaces() method now expects an additional parameter countryCodes to filter results by country. See documentation.
- The
Radar.trackVerified() method now returns token: RadarVerifiedLocationToken, which includes user, events, token,, expiresAt, expiresIn, and passed. The Radar.trackVerifiedToken() method has been removed, since Radar.trackVerified() now returns a signed JWT.
// 3.13.x
Radar.trackVerified { (status, token) in
if token?.passed == true {
// allow access to feature, send token to server for validation
} else {
// deny access to feature, show error message
}
}
// 3.12.x
Radar.trackVerified { (status, location, events, user) in
if user?.fraud?.passed == true &&
user?.country?.allowed == true &&
user?.state?.allowed == true {
// allow access to feature
} else {
// deny access to feature, show error message
}
}
Radar.trackVerifiedToken { (status, token) in
// send token to server for validation
}
- The
RadarDelegate interface has been changed to add a didUpdateLocationPermissionStatus() method.
- The
Radar.searchGeofences() methods have been changed to Radar.searchGeofences(completionHandler:) and Radar.searchGeofences(near:radius:tags:metadata:limit:includeGeometry:completionHandler:). Use includeGeometry to include full geometry of the geofence. Set radius to -1 to search for geofences without a radius limit.
- The
Radar.autocomplete(query:near:layers:limit:country:expandUnits:completionHandler:) method is now Radar.autocomplete(query:near:layers:limit:country:mailable:completionHandler:).
- expandUnits has been deprecated and will always be true regardless of value passed in.
- Custom events have been renamed to conversions.
-
Radar.sendEvent(customType:metadata:completionHandler:) is now Radar.logConversion(name:metadata:completionHandler).
- Radar.logConversion(name:revenue:metadata:callback:) has been added.
- Radar.sendEvent(customType:metadata:location:callback:) has been removed.
- RadarSendEventCompletionHandler(status, location, events, user) is now RadarLogConversionCompletionHandler(status, event).
- location and user are no longer available, and only the conversion event is returned as event instead of a coalesced list of events.
- On RadarEvent, customType is now conversionName, and RadarEventType.custom is now RadarEventType.conversion.
// 3.7.x
let metadata = ["foo": "bar"]
Radar.logConversion(name: "conversion_event", metadata: metadata) { (status, event) in
let conversionName = event?.conversionName // should be "conversion_event"
let conversionType = event?.type // should be RadarEventType.conversion
}
Radar.logConversion(name: "conversion_with_revenue", revenue: 0.2, metadata: metadata) { (status, event) in
let revenue = event?.metadata?["revenue"] // should be 0.2
}
// 3.6.x
let metadata = ["foo": "bar"]
Radar.sendEvent(customType: "custom_event", metadata: metadata) { (status, location, events, user) in
}
// sendEvent() with location no longer exists in 3.7.0
Radar.sendEvent(customType: "event_with_location", location: CLLocation(...), metadata: metadata) { (status, location, events, user) in
}
- The SDK is now distributed as a
.xcframework file instead of a .framework file.
- A few methods have been renamed to avoid false positive App Store rejections for private APIs.
- On
RadarTrackingOptions, presets now begin with preset. RadarTrackingOptions.continuous is now RadarTrackingOptions.presetContinuous, RadarTrackingOptions.responsive is now RadarTrackingOptions.presetResponsive, and RadarTrackingOptions.efficient is now RadarTrackingOptions.presetEfficient.
- On
RadarTrackingOptions, trackingOptions.sync is now trackingOptions.syncLocations.
- On
RadarTripOptions, initWithExternalId: is now initWithExternalId:destinationGeofenceTag:destinationGeofenceExternalId:.
- On
RadarBeacon, RadarGeofence, and RadarUser, _description is now __description.
- On
RadarPolygonGeometry, coordinates is now _coordinates.
- On
Radar, stringForSource: is now stringForLocationSource:.
RadarTripCompletionHandler now returns trip and events on calls to Radar.startTrip(), Radar.updateTrip(), Radar.completeTrip(), and Radar.cancelTrip().
- On
RadarDelegate, user is now optional on didReceiveEvents:user:. user will be nil when events are delivered from calls to Radar.startTrip(), Radar.updateTrip(), Radar.completeTrip(), and Radar.cancelTrip().
// 3.2.x
// presets now begin with `preset`
Radar.startTracking(RadarTrackingOptions.presetContinuous)
Radar.startTracking(RadarTrackingOptions.presetResponsive)
Radar.startTracking(RadarTrackingOptions.presetEfficient)
// `RadarTripCompletionHandler` now returns `trip` and `events`
Radar.startTrip(options: options) { status, trip, events in
}
// `user` is now optional
func didReceiveEvents(_ events: [RadarEvent], user: RadarUser?) {
}
// 3.1.x
Radar.startTracking(RadarTrackingOptions.continuous)
Radar.startTracking(RadarTrackingOptions.responsive)
Radar.startTracking(RadarTrackingOptions.efficient)
Radar.startTrip(options: options) { status in
}
func didReceiveEvents(_ events: [RadarEvent], user: RadarUser) {
}
- The
Radar.trackOnce(desiredAccuracy:completionHandler:) method is now Radar.trackOnce(desiredAccuracy:beacons:completionHandler). Use beacons = true to range beacons.
- The
Radar.stopTrip() method has been removed. Call Radar.completeTrip() or Radar.cancelTrip() instead.
- This update introduces new tracking options and presets. See the announcement, the background tracking documentation, and the tracking options reference.
- If you were using
Radar.startTracking(), you must choose a preset. v2 default behavior was similar to Radar.startTracking(RadarTrackingOptions.responsive).
- If you were using
trackingOptions.priority = RadarTrackingPriorityEfficiency, use the preset RadarTrackingOptions.efficient instead.
- The
didUpdateClientLocation:stopped:source: method is now required in RadarDelegate. It tells the delegate that the client's location was updated but not necessarily synced to the server. To receive only server-synced location updates and user state, use didUpdateLocation:user: instead.
- The
updateLocation:completionHandler: method has been renamed to trackOnceWithLocation:completionHandler:.
adId collection is now optional. To collect adId, call setAdIdEnabled:.
setPlacesProvider: has been removed.
// 3.0.x
Radar.startTracking(RadarTrackingOptions.efficient)
Radar.trackOnce(location, completionHandler)
Radar.setAdIdEnabled(true) // optional
// 2.1.x
let trackingOptions = RadarTrackingOptions()
trackingOptions.priority = .efficiency
Radar.startTracking(trackingOptions)
Radar.updateLocation(location, completionHandler)
- The
requestWhenInUseAuthorization, requestAlwaysAuthorization, and authorizationStatus helper methods have been removed. Call the corresponding methods on CLLocationManager instead. See https://developer.apple.com/documentation/corelocation/cllocationmanager.
- The
RadarStatusErrorUserId and RadarStatusErrorPlaces enum values have been removed. The SDK now handles these cases gracefully.
- The
setTrackingPriority: method has been removed.
userId on RadarUser is now nullable.
- The
reidentifyUserWithOldUserId: method has been removed. To reidentify a user, call setUserId: with the new userId instead.