全部产品

iOS 小程序 API 权限扩展配置

更新时间:2020-09-11 14:52:38

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

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

  1. 自定义文案提示,接入方可控制文案以及展示样式。
  2. 允许接入方读写权限配置。
说明:此扩展配置仅在后台已开启 小程序权限控制 时才可用。

权限配置

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

权限 key API
相机 camera scan, chooseImage, chooseVideo
相册 album saveImage, saveVideosToPhotosAlbum
位置 location getLocation, getCurrentLocation
麦克风 audioRecord startAudioRecord, stopAudioRecord, cancelAudioRecord

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

authorized

自定义展示

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

custom-alert

具体实现步骤如下:

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

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

    1. #pragma mark 小程序 API 权限管控
    2. - (void)showAlertWithTitle:(NSString *)title appName:(NSString *)appName storageKey:(NSString *)storageKey callback:(void (^)(NSInteger index))callback
    3. {
    4. if ([title length] > 0) {
    5. UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title
    6. message:nil
    7. delegate:self
    8. cancelButtonTitle:@"取消"
    9. otherButtonTitles:@"确定", nil];
    10. self.callback = callback;
    11. [alert show];
    12. }
    13. }
    14. - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
    15. {
    16. if (self.callback) {
    17. if (buttonIndex == alertView.cancelButtonIndex) {
    18. // 用户允许授权,callback 参数为 0
    19. self.callback(0);
    20. }else{
    21. // 用户允许授权,callback 参数为 1
    22. self.callback(1);
    23. }
    24. }
    25. }