| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 | 
							- #import "RNPermissionHandlerBluetoothPeripheral.h"
 - 
 - @import CoreBluetooth;
 - 
 - @interface RNPermissionHandlerBluetoothPeripheral() <CBPeripheralManagerDelegate>
 - 
 - @property (nonatomic, strong) CBPeripheralManager* peripheralManager;
 - @property (nonatomic, strong) void (^resolve)(RNPermissionStatus status);
 - @property (nonatomic, strong) void (^reject)(NSError *error);
 - 
 - @end
 - 
 - @implementation RNPermissionHandlerBluetoothPeripheral
 - 
 - + (NSArray<NSString *> * _Nonnull)usageDescriptionKeys {
 -   return @[
 -     @"NSBluetoothPeripheralUsageDescription",
 -     @"NSBluetoothAlwaysUsageDescription",
 -   ];
 - }
 - 
 - + (NSString * _Nonnull)handlerUniqueId {
 -   return @"ios.permission.BLUETOOTH_PERIPHERAL";
 - }
 - 
 - - (void)checkWithResolver:(void (^ _Nonnull)(RNPermissionStatus))resolve
 -                  rejecter:(void (__unused ^ _Nonnull)(NSError * _Nonnull))reject {
 - #if TARGET_OS_SIMULATOR
 -   return resolve(RNPermissionStatusNotAvailable);
 - #else
 -   if (![RNPermissions isBackgroundModeEnabled:@"bluetooth-peripheral"]) {
 -     return resolve(RNPermissionStatusNotAvailable);
 -   }
 - 
 -   switch ([CBPeripheralManager authorizationStatus]) {
 -     case CBPeripheralManagerAuthorizationStatusNotDetermined:
 -       return resolve(RNPermissionStatusNotDetermined);
 -     case CBPeripheralManagerAuthorizationStatusRestricted:
 -       return resolve(RNPermissionStatusRestricted);
 -     case CBPeripheralManagerAuthorizationStatusDenied:
 -       return resolve(RNPermissionStatusDenied);
 -     case CBPeripheralManagerAuthorizationStatusAuthorized:
 -       return resolve(RNPermissionStatusAuthorized);
 -   }
 - #endif
 - }
 - 
 - - (void)requestWithResolver:(void (^ _Nonnull)(RNPermissionStatus))resolve
 -                    rejecter:(void (^ _Nonnull)(NSError * _Nonnull))reject {
 -   if (![RNPermissions isBackgroundModeEnabled:@"bluetooth-peripheral"]) {
 -     return resolve(RNPermissionStatusNotAvailable);
 -   }
 - 
 -   _resolve = resolve;
 -   _reject = reject;
 - 
 -   _peripheralManager = [[CBPeripheralManager alloc] initWithDelegate:self queue:nil options:@{
 -     CBPeripheralManagerOptionShowPowerAlertKey: @false,
 -   }];
 - 
 -   [_peripheralManager startAdvertising:@{}];
 - }
 - 
 - - (void)peripheralManagerDidUpdateState:(nonnull CBPeripheralManager *)peripheral {
 -   int state = peripheral.state;
 - 
 -   [_peripheralManager stopAdvertising];
 -   _peripheralManager = nil;
 - 
 -   switch (state) {
 -     case CBManagerStatePoweredOff:
 -     case CBManagerStateResetting:
 -     case CBManagerStateUnsupported:
 -       return _resolve(RNPermissionStatusNotAvailable);
 -     case CBManagerStateUnknown:
 -       return _resolve(RNPermissionStatusNotDetermined);
 -     case CBManagerStateUnauthorized:
 -       return _resolve(RNPermissionStatusDenied);
 -     case CBManagerStatePoweredOn:
 -       return [self checkWithResolver:_resolve rejecter:_reject];
 -   }
 - }
 - 
 - @end
 
 
  |