原文链接我在这,【iOS开发笔记】系统权限的获取和请求 - 简书

 TenBluetoothManager.m

#import "TenBluetoothManager.h"

@interface TenBluetoothManager ()

/**蓝牙管理类*/

@property (nonatomic, strong) CBCentralManager *cbCentralManager;

/**请求蓝牙权限回调*/

@property (nonatomic, copy) void (^bluetoothAuthBlock) (BOOL granted, CBPeripheralManagerAuthorizationStatus status);

@end

static TenBluetoothManager *_bluetoothManager;

@implementation TenBluetoothManager

#pragma mark - 构造

/**构造方法*/

+(instancetype)allocWithZone:(struct _NSZone *)zone {

static dispatch_once_t onceToken;

dispatch_once(&onceToken, ^{

if (_bluetoothManager == nil) {

_bluetoothManager = [super allocWithZone:zone];

}

});

return _bluetoothManager;

}

/**单例方法*/

+(instancetype)shareManager {

return [[self alloc] init];

}

#pragma mark - public

-(void)ten_requestBluetoothRequest:(void (^)(BOOL, CBPeripheralManagerAuthorizationStatus))block {

self.bluetoothAuthBlock = block;

[self.cbCentralManager scanForPeripheralsWithServices:nil options:nil];

}

#pragma mark - CBCentralManagerDelegate

-(void)centralManagerDidUpdateState:(CBCentralManager *)central {

if (self.bluetoothAuthBlock) {

CBPeripheralManagerAuthorizationStatus authStatus = [CBPeripheralManager authorizationStatus];

self.bluetoothAuthBlock(authStatus == CBPeripheralManagerAuthorizationStatusAuthorized, authStatus);

}

}

#pragma mark - lazy

-(CBCentralManager *)cbCentralManager {

if (!_cbCentralManager) {

_cbCentralManager = [[CBCentralManager alloc] initWithDelegate:self queue:nil];

}

return _cbCentralManager;

}

@end

TenBluetoothManager.h 

#import

#import

@interface TenBluetoothManager : NSObject

/**单例方法*/

+(instancetype)shareManager;

/**

唤起请求蓝牙权限

@param block 结果回调

*/

-(void)ten_requestBluetoothRequest:(void (^) (BOOL granted, CBPeripheralManagerAuthorizationStatus status))block;

@end

 调用

UNI_EXPORT_METHOD(@selector(getBluetoothPermissions:))

- (void)getBluetoothPermissions:(void(^)(BOOL authorized))completion {

[[TenBluetoothManager shareManager] ten_requestBluetoothRequest:^(BOOL granted, CBPeripheralManagerAuthorizationStatus status) {

}];

}

然后

info.plist添加如下

Privacy - Bluetooth Always Usage Description

Privacy - Bluetooth Peripheral Usage Description

实测结果

 

精彩链接

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。