React Native iOS/Android网络权限申请:求最简方案及示例
React Native中申请网络权限的最简方法及示例
嘿,我懂你用react-native-permissions时遇到link问题的烦躁——其实不用依赖第三方库,手动配置原生平台的权限文件就是最简的方法,步骤清晰还不容易出问题,我给你详细讲讲:
iOS平台配置
iOS的网络权限配置主要在Info.plist文件里操作:
- 打开项目目录下的
ios/[你的项目名称]/Info.plist文件 - 根据你的需求添加对应的配置:
- 如果需要允许应用访问任意网络(包括HTTP,默认iOS 10+只允许HTTPS),添加这段XML代码:
<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict> - 要是只想允许访问特定的HTTP域名(更安全的做法),可以用精细配置:
<key>NSAppTransportSecurity</key> <dict> <key>NSExceptionDomains</key> <dict> <key>your-target-domain.com</key> <dict> <key>NSIncludesSubdomains</key> <true/> <key>NSAllowsArbitraryLoads</key> <true/> </dict> </dict> </dict> - 如果需要向用户说明为什么要使用网络(比如弹出权限提示时显示),添加描述字段:
<key>NSCellularNetworkUsageDescription</key> <string>需要访问网络以获取和同步数据</string>
- 如果需要允许应用访问任意网络(包括HTTP,默认iOS 10+只允许HTTPS),添加这段XML代码:
Android平台配置
Android的网络权限配置更简单,因为INTERNET属于正常权限,安装时会自动授予,不需要动态申请:
- 打开项目目录下的
android/app/src/main/AndroidManifest.xml文件 - 在
<manifest>标签内部添加所需权限:<!-- 基础网络访问权限,必须添加 --> <uses-permission android:name="android.permission.INTERNET" /> <!-- 可选:获取网络状态(比如判断当前是WiFi还是蜂窝网络) --> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- 可选:获取WiFi状态 --> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
额外小提示
如果你的应用后续需要动态申请其他敏感权限(比如位置、相机),其实react-native-permissions在RN 0.60+版本是支持自动link的,你可以试试更新到最新版的库,然后执行pod install(iOS)和同步Android gradle,不用手动跑react-native link命令。但如果只是单纯的网络权限,上面的手动配置原生文件就完全足够了,这是最直接的方案。
内容的提问来源于stack exchange,提问作者Ilkin Guluzada




