You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native Expo项目Android端Amplify Datastore可达性为false问题求助

React Native Expo + Amplify DataStore Android 网络可达性问题解决方案

问题概述

使用Amplify DataStore.query从后端获取数据时,iOS端网络可达性正常(Reachability - Notifying reachability change true),能成功获取数据;但Android端触发可达性变更为false(Reachability - Notifying reachability change false),无法获取数据。

解决方案

1. 确认Android网络权限配置

确保Expo项目的app.json中已添加必要的网络权限:

{
  "expo": {
    "android": {
      "permissions": ["INTERNET", "ACCESS_NETWORK_STATE"]
    }
  }
}

添加后重新构建Android应用,确保权限生效。

2. 验证后端端点的网络可达性

通过adb命令测试Android设备能否访问Amplify后端端点:

adb shell ping <你的Amplify API端点域名>

如果ping不通,排查设备网络环境:

  • 检查设备是否连接有效网络(Wi-Fi/移动数据)
  • 确认网络是否存在代理、防火墙限制,导致无法访问AWS服务

3. 优化DataStore网络配置

在Amplify初始化时,显式配置DataStore的网络相关参数,避免因默认配置导致的网络判断异常:

import { Amplify } from 'aws-amplify';
import awsconfig from './aws-exports';

Amplify.configure({
  ...awsconfig,
  DataStore: {
    syncInterval: 60000, // 同步间隔(毫秒)
    syncMaxRecords: 5000,
    enableSync: true,
    // 处理冲突逻辑,确保网络恢复后正常同步
    conflictHandler: async (data) => {
      return { resolution: data.remote };
    }
  }
});

4. 手动校验网络状态

使用Expo Network API手动校验网络连接,避免依赖Reachability的误判:

import * as Network from 'expo-network';
import { DataStore } from 'aws-amplify';
import { Restaurant } from './models';

const fetchRestaurants = async () => {
  const networkState = await Network.getNetworkStateAsync();
  if (!networkState.isConnected) {
    console.error("当前设备未连接网络");
    return;
  }

  try {
    const results = await DataStore.query(Restaurant);
    setRestaurants(results);
  } catch (error) {
    console.error("获取餐厅数据失败:", error);
  }
};

useEffect(() => {
  fetchRestaurants();
  // 监听网络状态变化,恢复连接时自动重新获取数据
  const subscription = Network.addNetworkStateListener(state => {
    if (state.isConnected) {
      fetchRestaurants();
    }
  });

  return () => subscription.remove();
}, []);

5. 清除缓存并重新构建

  • 运行amplify push确保后端配置与本地代码一致
  • 卸载Android应用,清除残留缓存后重新安装
  • 执行expo start --clear清除Expo打包缓存,重新构建项目

内容的提问来源于stack exchange,提问作者5ecured

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 04:55:44