Commit 89e62f9c by Maurits van Beusekom Committed by GitHub

Merge pull request #62 from BaseflowIT/issues/54

 Make sure to return permission state over service state
parents 39ae5be0 87c6c523
...@@ -143,7 +143,7 @@ enum PermissionStatus { ...@@ -143,7 +143,7 @@ enum PermissionStatus {
/// Permission to access the requested feature is denied by the user. /// Permission to access the requested feature is denied by the user.
denied, denied,
/// The feature is disabled (or not available) on the device. /// Permissions to access the feature is granted by the user but the feature is disabled.
disabled, disabled,
/// Permission to access the requested feature is granted by the user. /// Permission to access the requested feature is granted by the user.
......
connection.project.dir= connection.project.dir=../example/android
eclipse.preferences.version=1 eclipse.preferences.version=1
...@@ -18,15 +18,16 @@ class LocationPermissionStrategy : NSObject, PermissionStrategy, CLLocationManag ...@@ -18,15 +18,16 @@ class LocationPermissionStrategy : NSObject, PermissionStrategy, CLLocationManag
} }
private static func getPermissionStatus(permission: PermissionGroup) -> PermissionStatus { private static func getPermissionStatus(permission: PermissionGroup) -> PermissionStatus {
if !CLLocationManager.locationServicesEnabled() { let authorizationStatus: CLAuthorizationStatus = CLLocationManager.authorizationStatus()
let permissionStatus: PermissionStatus = LocationPermissionStrategy.determinePermissionStatus(
permission: permission,
authorizationStatus: authorizationStatus)
if permissionStatus == PermissionStatus.granted && !CLLocationManager.locationServicesEnabled() {
return PermissionStatus.disabled return PermissionStatus.disabled
} }
let status: CLAuthorizationStatus = CLLocationManager.authorizationStatus() return permissionStatus
return LocationPermissionStrategy.determinePermissionStatus(
permission: permission,
authorizationStatus: status)
} }
func requestPermission(permission: PermissionGroup, completionHandler: @escaping PermissionStatusHandler) { func requestPermission(permission: PermissionGroup, completionHandler: @escaping PermissionStatusHandler) {
......
...@@ -15,22 +15,25 @@ class SensorPermissionStrategy : NSObject, PermissionStrategy { ...@@ -15,22 +15,25 @@ class SensorPermissionStrategy : NSObject, PermissionStrategy {
} }
private static func getPermissionStatus() -> PermissionStatus { private static func getPermissionStatus() -> PermissionStatus {
if !CMMotionActivityManager.isActivityAvailable() {
return PermissionStatus.disabled
}
if #available(iOS 11.0, *) { if #available(iOS 11.0, *) {
let status: CMAuthorizationStatus = CMMotionActivityManager.authorizationStatus() let status: CMAuthorizationStatus = CMMotionActivityManager.authorizationStatus()
var permissionStatus: PermissionStatus
switch status { switch status {
case CMAuthorizationStatus.authorized: case CMAuthorizationStatus.authorized:
return PermissionStatus.granted permissionStatus = PermissionStatus.granted
case CMAuthorizationStatus.denied: case CMAuthorizationStatus.denied:
return PermissionStatus.denied permissionStatus = PermissionStatus.denied
case CMAuthorizationStatus.restricted: case CMAuthorizationStatus.restricted:
return PermissionStatus.restricted permissionStatus = PermissionStatus.restricted
default: default:
return PermissionStatus.unknown permissionStatus = PermissionStatus.unknown
}
if permissionStatus == PermissionStatus.granted && !CMMotionActivityManager.isActivityAvailable() {
return PermissionStatus.disabled
} else {
return permissionStatus
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment