iOS端react-native-permissions获取相册权限返回unavailable的解决方法
1. 匹配iOS版本选择正确的权限常量
react-native-permissions针对不同iOS版本提供了不同的相册权限常量,用错会直接返回unavailable:
- iOS 13及以下:使用
PERMISSIONS.IOS.PHOTO_LIBRARY - iOS 14-15:
- 需要读取/修改全相册:用
PERMISSIONS.IOS.PHOTO_LIBRARY - 仅需添加照片到相册:用
PERMISSIONS.IOS.PHOTO_LIBRARY_ADD_ONLY
- 需要读取/修改全相册:用
- iOS 16及以上:
- 读取+写入全相册:用
PERMISSIONS.IOS.PHOTO_LIBRARY_READ_WRITE(推荐) - 仅添加照片:用
PERMISSIONS.IOS.PHOTO_LIBRARY_ADD_ONLY
- 读取+写入全相册:用
2. 完善Info.plist权限描述配置
根据选择的权限常量,添加对应的描述键,注意键名拼写完全一致:
- 若使用
PHOTO_LIBRARY或PHOTO_LIBRARY_READ_WRITE:<key>NSPhotoLibraryUsageDescription</key> <string>需要访问您的相册以读取/保存媒体内容</string> - 若使用
PHOTO_LIBRARY_ADD_ONLY:<key>NSPhotoLibraryAddUsageDescription</key> <string>需要访问您的相册以保存媒体内容</string>
3. 确认package.json配置并重新安装依赖
确保package.json中reactNativePermissionsIOS数组包含对应权限的字符串,注意首字母大写:
"reactNativePermissionsIOS": [ "PhotoLibrary", "PhotoLibraryReadWrite", // iOS16+需要的话加上 "PhotoLibraryAddOnly" // 仅添加权限需要的话加上 ]
然后执行以下命令:
cd ios pod deintegrate pod install cd ..
4. 清理项目缓存
缓存可能导致配置不生效,执行以下操作:
- 关闭Xcode和Metro服务
- 删除iOS项目下的
build文件夹 - 重启Metro并清除缓存:
npx react-native start --reset-cache - 重新用Xcode或
npx react-native run-ios启动项目
5. 修正代码中的权限调用
统一使用async/await写法,确保权限常量正确,示例代码(以iOS16+读取写入为例):
import React from 'react'; import { View, Text, Pressable } from 'react-native'; import { check, request, PERMISSIONS, RESULTS } from 'react-native-permissions'; const App = () => { const requestUserMediaPermission = async () => { try { const status = await check(PERMISSIONS.IOS.PHOTO_LIBRARY_READ_WRITE); if (status === RESULTS.GRANTED) { console.log('权限已授予'); return; } const result = await request(PERMISSIONS.IOS.PHOTO_LIBRARY_READ_WRITE); console.log(result); } catch (err) { console.error(err); } }; return ( <View style={{ backgroundColor: 'black', flex: 1, justifyContent: 'center' }}> <Pressable onPress={requestUserMediaPermission}> <Text style={{ fontWeight: 'bold', color: 'white', textAlign: 'center', fontSize: 20 }}>获取相册权限</Text> </Pressable> </View> ); }; export default App;
内容的提问来源于stack exchange,提问作者type
相关产品推荐
相关产品推荐

