BBASMDevicePermissionProtocol.h 2.21 KB
//
//  BBASMDevicePermissionProtocol.h
//  BBAMNP
//
//  Created by baidu on 2021/4/23.
//

#import <Foundation/Foundation.h>
#import <Pyramid/Pyramid.h>

NS_ASSUME_NONNULL_BEGIN

AliasService(BBASMDevicePermissionProtocol, bba_smDevicePermission)

typedef NS_ENUM(NSInteger, BBASMDevicePermissionType) {
    BBASMDevicePermissionTypeUnknown           = 0,    // 未知
    BBASMDevicePermissionTypeLocation          = 1,    // 定位权限
    BBASMDevicePermissionTypeSaveToAlbum       = 2,    // 相册写权限
    BBASMDevicePermissionTypeVoiceRecord       = 3,    // 麦克风权限
    BBASMDevicePermissionTypeCamera            = 4,    // 相机权限
    BBASMDevicePermissionTypeCalendar          = 5,    // 日历权限
    BBASMDevicePermissionTypeContacts          = 6,    // 通讯录权限
    BBASMDevicePermissionTypeAccuracyLocation  = 7,    // iOS14 精准定位权限
    BBASMDevicePermissionTypeNotification      = 8,    // 通知
};

typedef NS_ENUM(NSInteger, BBASMDevicePermissionStatus) {
    BBASMDevicePermissionStatusNotDetermined    = 0,    // 未决定
    BBASMDevicePermissionStatusAllow            = 1,    // 已授权
    BBASMDevicePermissionStatusDenied           = 2     // 已拒绝
};

@protocol BBASMDevicePermissionProtocol <NSObject>

/// 系统设置-定位服务开关是否已打开
+ (BOOL)isLocationSwitchOn;

/// 系统设置-WIFI开关是否已打开
+ (BOOL)isWifiSwitchOn;

/// 校验设备权限
/// @param authorizeType 权限类型
/// @note :  authorizeType为BBASMDevicePermissionTypeAccuracyLocation时:
/// 返回值为BBASMDevicePermissionStatusAllow时,为已获得精准定位权限,返回值为BBASMDevicePermissionStatusNotDetermined时,为未获得精准定位权限或不支持精准定位权限
+ (BBASMDevicePermissionStatus)checkDevicePermissionWithType:(BBASMDevicePermissionType)authorizeType;

/// 展示无权限时的兜底弹窗
/// @param appID 小程序appId
/// @param authorizeType 权限类型
/// @param dismissBlock 消失时的回调
+ (void)showAuthorizeGuildAlertWith:(NSString *)appID
                      authorizeType:(BBASMDevicePermissionType)authorizeType
                       dismissBlock:(void (^ __nullable)(void))dismissBlock;

@end

NS_ASSUME_NONNULL_END