Skip to content

Commit 5d4235c

Browse files
fix: Fixed handling multiple location permissions issue
chore: Bumped version to 1.1.1
1 parent d7d0100 commit 5d4235c

File tree

6 files changed

+30
-16
lines changed

6 files changed

+30
-16
lines changed

Assets/Plugins/VoxelBusters/PermissionsKit/Editor/BuildPipeline/Xcode/PBXNativePluginsProcessor.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ void AddPermission(string key, params Permission[] permissions)
167167
AddPermission("NSBluetoothAlwaysUsageDescription", Permission.ACCESS_BLUETOOTH);
168168
AddPermission("NSBluetoothPeripheralUsageDescription", Permission.ACCESS_BLUETOOTH);
169169
AddPermission("NSLocationWhenInUseUsageDescription", Permission.ACCESS_FINE_LOCATION, Permission.ACCESS_COARSE_LOCATION);
170-
AddPermission("NSLocationAlwaysUsageDescription", Permission.ACCESS_LOCATION_IN_BACKGROUND);
170+
AddPermission("NSLocationAlwaysAndWhenInUseUsageDescription", Permission.ACCESS_LOCATION_IN_BACKGROUND);
171171
AddPermission("NSLocationUsageDescription", Permission.ACCESS_COARSE_LOCATION);
172172
AddPermission("NSLocalNetworkUsageDescription", Permission.ACCESS_LOCAL_NETWORK);
173173
AddPermission("NSUserTrackingUsageDescription", Permission.PUSH_NOTIFICATIONS);

Assets/Plugins/VoxelBusters/PermissionsKit/Plugins/iOS/PermissionsKit/NPLocationManagerListener.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,9 @@ typedef void (^LocationAuthorizationStatusCallback) (CLAuthorizationStatus authS
1313

1414
@interface NPLocationManagerListener : NSObject<CLLocationManagerDelegate>
1515

16-
-(NPLocationManagerListener*) init:(LocationAuthorizationStatusCallback) completion withInitialStatus:(CLAuthorizationStatus) initialStatus;
16+
-(NPLocationManagerListener*) initwithInitialStatus:(CLAuthorizationStatus) initialStatus;
17+
18+
-(void) addListener:(LocationAuthorizationStatusCallback) completion;
1719

1820
@end
1921
#endif

Assets/Plugins/VoxelBusters/PermissionsKit/Plugins/iOS/PermissionsKit/NPLocationManagerListener.mm

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,30 +12,36 @@
1212

1313
@interface NPLocationManagerListener ()
1414

15-
@property (nonatomic, copy) LocationAuthorizationStatusCallback callback;
15+
@property (nonatomic, strong) NSMutableArray<LocationAuthorizationStatusCallback> *callbackList;
1616
@property (nonatomic) CLAuthorizationStatus initialStatus;
1717

1818
@end
1919

2020
@implementation NPLocationManagerListener
2121

22-
@synthesize callback;
22+
@synthesize callbackList;
2323
@synthesize initialStatus;
2424

25-
-(NPLocationManagerListener*) init:(LocationAuthorizationStatusCallback) callback withInitialStatus:(CLAuthorizationStatus) initialStatus
25+
-(NPLocationManagerListener*) initwithInitialStatus:(CLAuthorizationStatus) initialStatus
2626
{
27-
self.callback = callback;
27+
self.callbackList = [[NSMutableArray alloc] init];
2828
self.initialStatus = initialStatus;
2929
return self;
3030
}
3131

32+
-(void) addListener:(LocationAuthorizationStatusCallback) completion
33+
{
34+
[callbackList addObject:completion];
35+
}
36+
3237
- (void)locationManagerDidChangeAuthorization:(CLLocationManager *)manager
3338
{
3439

3540
CLAuthorizationStatus authStatus = [CLLocationManager authorizationStatus];
36-
3741
if(initialStatus != authStatus) {
38-
self.callback(authStatus);
42+
for (LocationAuthorizationStatusCallback eachCallback in callbackList) {
43+
eachCallback(authStatus);
44+
}
3945
}
4046
}
4147

Assets/Plugins/VoxelBusters/PermissionsKit/Plugins/iOS/PermissionsKit/NPPermissionsKit.mm

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -186,17 +186,23 @@ -(void) request:(NSArray<NPPermission*>*) permissions withPurposeDescription:(NS
186186
#if PERMISSIONS_KIT_USES_LOCATION_FRAMEWORK
187187
- (void)requestLocationPermission:(BOOL)requestAlways
188188
completion:(void (^)(PermissionsKitStatus status, NSError * _Nullable error))completion {
189-
190-
self.locationManager = [[CLLocationManager alloc] init];
189+
191190
CLAuthorizationStatus authStatus = [CLLocationManager authorizationStatus];
192191
PermissionsKitStatus status = PermissionsKitStatusUnknown;
193192

194-
self.locationStatusListener = [[NPLocationManagerListener alloc] init:^(CLAuthorizationStatus authStatus) {
195-
PermissionsKitStatus newStatus = [self convertStatus:authStatus withRequestAlways:requestAlways];
193+
if(self.locationManager == nil) {
194+
self.locationManager = [[CLLocationManager alloc] init];
195+
self.locationStatusListener = [[NPLocationManagerListener alloc] initwithInitialStatus:authStatus];
196+
}
197+
198+
__weak NPPermissionsKit *weakSelf = self;
199+
200+
[self.locationStatusListener addListener:^(CLAuthorizationStatus authStatus) {
201+
PermissionsKitStatus newStatus = [weakSelf convertStatus:authStatus withRequestAlways:requestAlways];
196202
completion(newStatus, nil);
197-
self.locationManager = nil;
198-
self.locationStatusListener = nil;
199-
} withInitialStatus:authStatus];
203+
weakSelf.locationManager = nil;
204+
weakSelf.locationStatusListener = nil;
205+
}];
200206

201207
status = [self convertStatus:authStatus withRequestAlways:requestAlways];
202208

Assets/Plugins/VoxelBusters/PermissionsKit/Runtime/Core/Setup/PermissionsKitSettings.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ public class PermissionsKitSettings : SettingsObject
4747
{
4848
return new UnityPackageDefinition(name: "com.voxelbusters.permissionskit",
4949
displayName: "Permissions Kit",
50-
version: "1.1.0",
50+
version: "1.1.1",
5151
defaultInstallPath: $"Assets/Plugins/VoxelBusters/PermissionsKit",
5252
dependencies: CoreLibrarySettings.Package);
5353
});
1.07 MB
Binary file not shown.

0 commit comments

Comments
 (0)