@@ -846,6 +846,25 @@ void AskForScreenCaptureAccess(const Napi::CallbackInfo &info) {
846
846
}
847
847
}
848
848
849
+ // Request Location access.
850
+ void AskForLocationAccess (const Napi::CallbackInfo &info) {
851
+ if (@available (macOS 10.15 , *)) {
852
+ std::string auth_status = LocationAuthStatus ();
853
+
854
+ if (auth_status == kNotDetermined ) {
855
+ CLLocationManager *location_manager = [[CLLocationManager alloc ] init ];
856
+ const std::string access_level = info[0 ].As <Napi::String>().Utf8Value ();
857
+ if (access_level == " always" ) {
858
+ [location_manager requestAlwaysAuthorization ];
859
+ } else if (access_level == " when-in-use" ) {
860
+ [location_manager requestWhenInUseAuthorization ];
861
+ }
862
+ } else if (auth_status == kDenied ) {
863
+ OpenPrefPane (" Privacy_Location" );
864
+ }
865
+ }
866
+ }
867
+
849
868
// Request Accessibility Access.
850
869
void AskForAccessibilityAccess (const Napi::CallbackInfo &info) {
851
870
NSDictionary *options = @{(id )kAXTrustedCheckOptionPrompt : @(NO )};
@@ -872,6 +891,8 @@ void AskForAccessibilityAccess(const Napi::CallbackInfo &info) {
872
891
Napi::Function::New (env, AskForFullDiskAccess));
873
892
exports.Set (Napi::String::New (env, " askForCameraAccess" ),
874
893
Napi::Function::New (env, AskForCameraAccess));
894
+ exports.Set (Napi::String::New (env, " askForLocationAccess" ),
895
+ Napi::Function::New (env, AskForLocationAccess));
875
896
exports.Set (Napi::String::New (env, " askForMicrophoneAccess" ),
876
897
Napi::Function::New (env, AskForMicrophoneAccess));
877
898
exports.Set (Napi::String::New (env, " askForMusicLibraryAccess" ),
0 commit comments