iOS 小程序 API 权限扩展配置

小程序的某些特殊 API,如定位、相机、相册等,通常会提示用户授权,待用户允许后方可执行 API。

小程序容器允许针对 API 调用进行如下扩展:

  1. 自定义文案提示,接入方可控制文案以及展示样式。

  2. 允许接入方读写权限配置。

说明

此扩展配置仅在后台已开启 小程序权限控制 时才可用。

权限配置

小程序已有默认配置的 key 以及对应的 API,详见下表:

权限

key

API

相机

camera

scan, chooseImage, chooseVideo

相册

album

saveImage, saveVideosToPhotosAlbum

位置

location

getLocation, getCurrentLocation

您可获取当前小程序已经请求过的权限字典:

authorized

自定义展示

mPaaS 支持自定义权限弹框的展示,您可以通过下图中的接口进行设置。

custom-alert

具体实现步骤如下:

  1. 在容器初始化完成后,指定自定义权限弹框的 delegate。

     - (void)application:(UIApplication *)application afterDidFinishLaunchingWithOptions:(NSDictionary *)launchOptions
     {
        ...
    
         // 小程序 API 权限管控
        [TAAuthorizeStorageManager shareInstance].authorizeAlertDelegate = self;
    
        ...
     }
  2. 实现自定义弹框方法。

     #pragma mark 小程序 API 权限管控
     - (void)showAlertWithTitle:(NSString *)title appName:(NSString *)appName storageKey:(NSString *)storageKey callback:(void (^)(NSInteger index))callback
     {
         if ([title length] > 0) {
             UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title
                                                             message:nil
                                                            delegate:self
                                                   cancelButtonTitle:@"取消"
                                                   otherButtonTitles:@"确定", nil];
    
             self.callback = callback;
             [alert show];
         }
    
     }
    
     - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
     {
         if (self.callback) {
             if (buttonIndex == alertView.cancelButtonIndex) {
               // 用户允许授权,callback 参数为 0
               self.callback(0);
             }else{
               // 用户允许授权,callback 参数为 1
               self.callback(1);
             }
         }
    
     }