Device
Handles Device related requests with IMS web services. Unless otherwise specified, requests performed by this service are on the current Device.
Activate
To activate the current device for data collection, the following API can be used.
Concrete Example
let service = DeviceService()
service.activate(then: { result in
    switch result {
    case: .success(_)
        // activation successful
    case: .failure(_)
        // failure error
    }
})val service = DeviceService()
service.activate() { result: Result<Content?>? ->
    if (result?.value == null || result.throwable != null) {
        // failure
    } else {
        // Success
        val content = result.value
    }
})Deactivate
Deactivate the current device for data collection. It may be desirable to deactivate a device if the host application's user logs out, or if the user becomes inactive.
To deactivate the current device for data collection, the following API can be used.
Concrete Example
let service = DeviceService()
service.deactivate(then: { result in
    switch result {
    case: .success(_)
        // deactivation successful
    case: .failure(_)
        // failure error
    }
})val service = DeviceService()
service.deactivate() { result: Result<Content?>? ->
    if (result?.value == null || result.throwable != null) {
        // failure
    } else {
        // Success
        val content = result.value
    }
})Fetch
In order to fetch the currentDevice's model,  the following API can be used.
Concrete Example
let service = DeviceService()
service.fetch(then: { result in
    guard !result.value.isEmpty else {
        // error
        return
    }
    completionHandler(.success(result.value))
})Verify And Re-Activate Device
To verify whether the current device is activated or to reactivate it if needed, please refer to the example below.
Example
let service = DeviceService()
deviceService.fetch { result in
    switch result {
    case .success:
        guard let device = result.value else {
            // DEVICE DOES NOT EXIST -> IS NOT ACTIVATED -> Re-ACTIVATE
            deviceService.activate(then: { result in
                switch result {
                case: .success(_)
                    // activation successful
                case: .failure(_)
                    // failure error
                }
            })
            return
        }
        guard device.isDataCollectionEnabled ?? false else {
            // DEVICE IS PRESENT -> BUT NOT ACTIVATED -> Re-ACTIVATE
            deviceService.activate(then: { result in
                switch result {
                case: .success(_)
                    // activation successful
                case: .failure(_)
                    // failure error
                }
            })
            return
        }
        // DEVICE IS ACTIVATED
        completionHandler(.success(device))
    case .failure(let error):
        // HANDLE FAILURE
    }
}DeviceService().fetch { result ->
    val device = result.value
    if (result.throwable == null && device != null) {
        if(device.dataCollectionIsActive) {
            // DEVICE IS ACTIVATED
        } else {
            // DEVICE IS PRESENT -> BUT NOT ACTIVATED -> Re-ACTIVATE
            DeviceService().activate() { result: Result<Content?>? ->
                if (result?.value == null || result.throwable != null) {
                    // failure
                } else {
                    // Success
                    val content = result.value
                }
            })
        }
    } else {
        // DEVICE DOES NOT EXIST -> IS NOT ACTIVATED -> Re-ACTIVATE
        DeviceService().activate() { result: Result<Content?>? ->
            if (result?.value == null || result.throwable != null) {
                // failure
            } else {
                // Success
                val content = result.value
            }
        })
    }
}Last updated
