FinClip为企业提供小程序生态圈技术产品,开发者可在FinClip小程序开发帮助中心找到相关FinClip小程序指引

# 权限管理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);
    }
});
© 2022 FinClip with ❤