# 权限管理Api类
app可以通过[FATClient sharedClient].authApiManager
来调用权限相关的Api。
# 1. 获取小程序权限配置
//// 获取小程序权限设置
/// @param appletId 小程序id
- (NSArray<FATAuthModel *> *)getAppletAuthSetting:(NSString *)appletId;
# 2. 更新小程序的权限
/// 更新小程序的权限
/// @param scope 权限类型
/// @param authValue 新的权限值,1代表允许,2代表拒绝。如果是后台定位权限的修改,1: 代表前台定位 2:拒绝 3:代表后台定位
/// @param appletId 小程序id
- (BOOL)updateAppletScopeAuth:(FATScopeName)scope authValue:(NSInteger)authValue forApplet:(NSString *)appletId;
/// 更新小程序的权限 (后续将要废弃)
/// @param authType 权限类型 scope.location
/// @param authValue 新的权限值。1代表允许,2代表拒绝。如果是后台定位权限的修改,1: 代表前台定位 2:拒绝 3:代表后台定位
/// @param appletId 小程序id
- (BOOL)updateAppletAuth:(FATAuthorizationType)authType authValue:(NSInteger)authValue forApplet:(NSString *)appletId;
# 3. 打开个人信息与权限管理页面
# 3.1 默认样式
以默认样式打开个人信息与授权管理页面
/// 打开个人信息与权限管理页面
/// @param parentViewController 父控制器,打开的个人信息与权限管理页面会在父控制器上模态弹出
- (void)openPrivacyManage:(UIViewController *)parentViewController;
# 3.2 修改导航栏样式
配置自定义的返回按钮和标题,打开个人想想你与授权管理页面
/// 打开个人信息与权限管理页面
/// @param parentViewController parentViewController 父控制器,打开的个人信息与权限管理页面会在父控制器上模态弹出
/// @param pageConfig 页面的I配置,如返回按钮图片 标题位置
- (void)openPrivacyManage:(UIViewController *)parentViewController pageConfig:(FATExternalPageConfig *)pageConfig;
# 4. 获取小程序的隐私协议配置
/// 获取小程序的隐私协议配置
/// @param appletId 小程序id
/// @param complete 结果回调,privacyInfo包含隐私配置相关信息
- (void)getAppletPrivacyInfo:(NSString *)appletId complete:(void (^)(FATPrivacyInfo *privacyInfo, FATError *error))complete;
# 5. 自定义scope权限
自定义的scope权限与自定义api关联,所以一般都是跟自定义api一起使用。
注册自定义api时,绑定自定义scope对象。当小程序里调用自定义api时,可以选择先展示弹框用户允许后,再执行自定义api的逻辑。
/**
注册自定义scope的异步扩展Api
注意:handler中异步返回的结果必须是可转json的字典。可用[NSJSONSerialization isValidJSONObject:xxxx]来判断
@param extApiName 扩展的api名称
@param scope 设置的FATAppletScope列表
@param handler 回调
@return 返回注册结果
*/
- (BOOL)registerScopeExtensionApi:(NSString *)extApiName BindScopes:(NSArray <FATAppletScope *>*)scope handler:(void (^)(FATAppletInfo *appletInfo, id param, FATScopeChecker *scopeChecker,FATExtensionApiCallback callback))handler;
具体实现如下: 1).注册绑定自定义scope的 自定义api。
// 创建自定义scope对象
FATAppletScope *scope = [[FATAppletScope alloc] init];
scope.scope = @"finclipLoginE";
scope.title = @"自定义finclipLoginE的title";
scope.desc = @"自定义finclipLoginE的desc";
scope.scopeName = @"自定义finclipLoginE的scopeName";
// 注册自定义scope的自定义api,并绑定scope
[[FATClient sharedClient] registerScopeExtensionApi:@"finclipExtScope" BindScopes:@[scope] handler:^(FATAppletInfo *appletInfo, id param, FATScopeChecker *scopeChecker, FATExtensionApiCallback callback) {
}];
2).在自定义api实现里,控制是否要展示自定义的权限弹框
[[FATClient sharedClient] registerScopeExtensionApi:@"finclipExtScope" BindScopes:@[scope] handler:^(FATAppletInfo *appletInfo, id param, FATScopeChecker *scopeChecker, FATExtensionApiCallback callback) {
// 通过FATScopeChecker对象在调用api前控制是否弹出小程序的权限弹窗
[scopeChecker checkScopeWithCallBack:^(BOOL status, NSString * _Nonnull errMsg) {
if (!status) {
callback(FATExtensionCodeFailure, @{@"errMsg" : errMsg});
return;
}
// 执行自定义api的具体逻辑
// 返回结果给小程序
callback(FATExtensionCodeSuccess, nil);
}];
}];
3).在小程序的根目录创建 FinClipConf.js
文件,并添加该自定义 API
module.exports = {
extApi:[
{ //普通交互API
name: 'finclipExtScope', //扩展api名 该api必须Native方实现了
sync: false, //是否为同步api
params: { //扩展api 的参数格式,可以只列必须的属性
url: ''
}
}
]
}
4).小程序中调用该自定义api
ft.finclipExtScope({
success: function (res) {
console.log("调用自定义api success");
console.log(res);
},
fail: function (res) {
console.log("调用自定义api fail");
console.log(res);
}
});