You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

React Native iOS/Android网络权限申请:求最简方案及示例

React Native中申请网络权限的最简方法及示例

嘿,我懂你用react-native-permissions时遇到link问题的烦躁——其实不用依赖第三方库,手动配置原生平台的权限文件就是最简的方法,步骤清晰还不容易出问题,我给你详细讲讲:

iOS平台配置

iOS的网络权限配置主要在Info.plist文件里操作:

  1. 打开项目目录下的ios/[你的项目名称]/Info.plist文件
  2. 根据你的需求添加对应的配置:
    • 如果需要允许应用访问任意网络(包括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>
      

Android平台配置

Android的网络权限配置更简单,因为INTERNET属于正常权限,安装时会自动授予,不需要动态申请:

  1. 打开项目目录下的android/app/src/main/AndroidManifest.xml文件
  2. <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

火山引擎 最新活动