diff --git a/apps/ios/Sources/Gateway/GatewayConnectionController.swift b/apps/ios/Sources/Gateway/GatewayConnectionController.swift index dc94f3d0797..5ce40eeaa1f 100644 --- a/apps/ios/Sources/Gateway/GatewayConnectionController.swift +++ b/apps/ios/Sources/Gateway/GatewayConnectionController.swift @@ -892,9 +892,11 @@ final class GatewayConnectionController { permissions["camera"] = AVCaptureDevice.authorizationStatus(for: .video) == .authorized permissions["microphone"] = AVCaptureDevice.authorizationStatus(for: .audio) == .authorized permissions["speechRecognition"] = SFSpeechRecognizer.authorizationStatus() == .authorized - permissions["location"] = Self.isLocationAuthorized( - status: CLLocationManager().authorizationStatus) - && CLLocationManager.locationServicesEnabled() + if let appModel = self.appModel { + permissions["location"] = Self.isLocationAuthorized( + status: appModel.locationAuthorizationStatus()) + && CLLocationManager.locationServicesEnabled() + } permissions["screenRecording"] = RPScreenRecorder.shared().isAvailable let photoStatus = PHPhotoLibrary.authorizationStatus(for: .readWrite) diff --git a/apps/ios/Sources/Model/NodeAppModel.swift b/apps/ios/Sources/Model/NodeAppModel.swift index 4c0ab81f1a1..5cf59f56ae7 100644 --- a/apps/ios/Sources/Model/NodeAppModel.swift +++ b/apps/ios/Sources/Model/NodeAppModel.swift @@ -1,3 +1,4 @@ +import CoreLocation import OpenClawChatUI import OpenClawKit import OpenClawProtocol @@ -514,6 +515,10 @@ final class NodeAppModel { } } + func locationAuthorizationStatus() -> CLAuthorizationStatus { + self.locationService.authorizationStatus() + } + func requestLocationPermissions(mode: OpenClawLocationMode) async -> Bool { guard mode != .off else { return true } let status = await self.locationService.ensureAuthorization(mode: mode)