react-native 踩坑: no permission Handler Detected(ios)rn>0.72

756 阅读1分钟

因为需要使用相机,于是我在项目里引入了一个社区知名库 react-native-permission 来管理权限

于是在正常 yarn install && pod install 后出现了这样的报错信息

no permission Handler Detected

第一次尝试: 官方文档上这样写:

By default no permission handler is linked. To add one, update your package.json by adding the permissions used in your app, then run npx react-native setup-ios-permissions followed by pod install (reactNativePermissionsIOS.json is also supported).

于是我修改package.json ,添加

//package.json
  "reactNativePermissionsIOS": [
    "Camera"
  ],

然后执行 npx react-native setup-ios-permissions 命令执行成功,未报错 以为解决了。结果重新运行还是一样的错误。 第一次尝试失败!

第二次尝试: 浏览社区以及issue,我看到作者有说是xcode缓存的问题,然后就开始了多次的重复clean build folder , clean drvicedata 的行为。 花了大量的时间,结果还是一样的 第三次尝试:把nodeMoudles错误注释掉,打个补丁,确实不报错了,但是验证也没了

第四次尝试: 开始寻找解决方法,于是在 No Permission Handler Detected (IOS) · Issue #449 · zoontek/react-native-permissions (github.com) 这个issue里看到作者pod里出现 Permission-Camera 于是选择手动链接处理程序

在Podfile里添加以下片段

//podfile
target 'sanitationApp' do
xxx
permissions_path = '../node_modules/react-native-permissions/ios'
pod 'Permission-Camera', :path => "../node_modules/react-native-permissions/ios/Camera/Permission-Camera.podspec"
  xxx

然后执行podfile,看到Permission-Camera成功被添加到pod

重新安装应用,发现问题得到完美解决

恭喜自己又解决了一个坑

一周后补充

可能是缓存的问题,把应用删掉,derivedData,cache 清掉,去掉手动链接突然不报错了。写rn越久,就越发现重启真的解决问题

所以本文废弃,仅做参考