iOS SDApiManager Framework - scopetech/Mobile-Public GitHub Wiki
SDApiManager SDK Documentation
This document describes how ScopeTechnology framework "SDApiManager" works and how to integrate into your application. While the target audience is coders/developers, it brings better understanding for those who are not too tech-savvy as well.
SDApiManager framework main functionality is to provide an interface to backend wrapping up all necessary APIs.
1. Driving behaviour events filtering
It's possible to filter the following events: acceleration, breaking and cornering. It means that all the events whose have gforce value lower than defined in Tenant Settings (see Connected Cars Portal -> Tenant Settings > Group 16: Driver Behaviour) are filtered out.
1.1. Trips API
Using
SDApiManager.getTripsFor(timeInterval: CCTimeInterval, ignoreCache: Bool, complete: SDCompleteBlock)
events are already filtered out.
1.2. MZone Events API
Using
SDApiManager.getMZoneEvents(for: CCTimeInterval, complete: SDCompleteBlock)
filtering is handled by the app using the following functions:
func getEvents() {
let timeIntervalForTrip = // some CCTimeInterval
SDApiManager.getMZoneEvents(for: timeIntervalForTrip) { [weak self] response in
guard let eventsData = response.parsedObject as? MZoneDetailedTripResponse, let allEvents = eventsData.tripDetails as? [MZoneDetailedTrip] else {
return
}
let filteredEvents = self?.filterEventsByThreshold(allEvents)
}
}
func filterEventsByThreshold(_ events: [MZoneDetailedTrip]) -> [MZoneDetailedTrip] {
return events.filter { event in
guard let eventType = TripEventType(rawValue: event.eventType) else {
return true
}
if eventType == .acceleration {
return event.gForce() >= SDApiManager.getAccelerationThreshold()
} else if eventType == .braking {
return event.gForce() >= SDApiManager.getBrakingThreshold()
} else if eventType == .cornering {
return event.gForce() >= SDApiManager.getCorneringThreshold()
}
return true
}
}