iOS端Flutter:用户拒图片权限后重申请,改资料时触发权限申请
1. iOS系统中用户拒绝图片权限后,再次发起权限申请的方法
当用户首次拒绝图片权限后,直接调用申请接口会静默失败,得引导用户去系统设置手动开启:
- 先通过
PHPhotoLibrary.authorizationStatus()获取当前权限状态,若为.denied或.restricted: - 弹出提示告诉用户必须开启权限才能使用相关功能,然后跳转到系统设置页面:
if let settingsURL = URL(string: UIApplication.openSettingsURLString) { UIApplication.shared.open(settingsURL) } - 用户在设置里开启权限后回到App就能正常使用;如果用户还是拒绝,后续每次触发操作都重复这个引导流程。
2. Flutter iOS应用中,强制授权权限才能修改个人资料的实现
用permission_handler插件就能搞定,步骤如下:
- 先配置iOS权限描述:在
Info.plist里添加相册权限的说明,示例:<key>NSPhotoLibraryUsageDescription</key> <string>需要访问相册来修改个人资料头像</string> - 在修改个人资料的触发入口,先做权限检查和申请:
import 'package:permission_handler/permission_handler.dart'; Future<void> checkPhotoPermissionBeforeEditProfile() async { var status = await Permission.photos.status; if (status.isDenied) { // 第一次请求权限 var result = await Permission.photos.request(); if (!result.isGranted) { // 用户拒绝,跳去设置 await openAppSettings(); // 这里可以加个弹窗,提示用户必须开启权限才能继续,直到用户处理完返回 } } else if (status.isPermanentlyDenied) { // 用户永久拒绝,直接跳设置 await openAppSettings(); } // 只有权限通过后,才进入个人资料修改流程 } - 每次用户点击修改个人资料时,先调用这个方法,只有权限状态为
granted时,才允许进入修改页面;否则一直引导用户去设置开启权限。
内容的提问来源于stack exchange,提问作者Navas Shareef
相关产品推荐
相关产品推荐

