React native react native:如何在离线模式下在emulator上运行应用程序?

React native react native:如何在离线模式下在emulator上运行应用程序?,react-native,React Native,当我将Android模拟器切换到飞行模式时,我正在开发的应用程序崩溃了,因为它需要开发服务器 我需要测试我的应用程序的脱机行为,所以我问你如何在模拟器中脱机使用应用程序 目标:我必须测试应用程序在连接不可用时的功能。我在问是否有一种方法可以在没有连接的情况下测试reac本机应用程序,但无需构建生产版本和安装,因为我正在积极开发离线模式,我需要重新运行应用程序。正如@zvona提到的,您可以通过关闭计算机的wifi来开发无wifi连接的离线应用程序,不是仿真器的 如果你需要测试你的应用程序是否在飞

当我将Android模拟器切换到飞行模式时,我正在开发的应用程序崩溃了,因为它需要开发服务器

我需要测试我的应用程序的脱机行为,所以我问你如何在模拟器中脱机使用应用程序


目标:我必须测试应用程序在连接不可用时的功能。我在问是否有一种方法可以在没有连接的情况下测试reac本机应用程序,但无需构建生产版本和安装,因为我正在积极开发离线模式,我需要重新运行应用程序。正如@zvona提到的,您可以通过关闭计算机的wifi来开发无wifi连接的离线应用程序,不是仿真器的


如果你需要测试你的应用程序是否在飞行模式下工作,那么你需要构建应用程序并安装IPA(iOS)/APK(Android)版本

在Android虚拟设备上,点击三个点->蜂窝,并将数据状态设置为未注册(关闭):


在这种情况下,确定用户离线并开发Android应用程序并不是那么简单

  • 拥有一个可用的WiFi或数据连接与拥有互联网是不同的。如果在模拟器或设备中关闭它们,则会丢失Metro服务器。当您关闭计算机WiFi时,您将失去互联网连接

  • 如果用户的信号非常差,连接和互联网都可用,并且你的应用程序下载了一个相当大的文件,该怎么办。您可能应该提醒用户这可能需要很长时间,并询问他是否愿意稍后在信号更好时下载

  • 如果用户只有移动数据连接,没有WiFi,而您的下载可能会浪费他们所有的数据空间,该怎么办

  • 如何告知用户问题的原因。“脱机时不下载文件”?脱机对用户意味着什么?“没有WiFi?”,“没有数据许可”?“没有信号”?“数据连接关闭”

所以我不是用离线这个词,而是让我们来谈谈连通性。我认为,要正确开发连通性感知应用程序,您必须考虑上述所有场景。就像你说的,我们可以很容易地模拟它们

此外,您还希望能够快速模拟它们,与模拟器、设备或WiFi设置的交互很少。甚至可能会用一些开玩笑的测试框架来嘲笑他们。后者,超出了范围,但很高兴了解它

我给你的建议是

  • 实现一个ConnectionProvider,该Provider侦听连接中的更改并共享连接状态

  • 使那些需要连通性意识的组件成为此上下文的消费者,从而使ConnectivityConsumer的实例成为消费者

  • 伪造不同的连接状态以测试不同的场景

  • 以下是连接状态的外观:

    details: {isConnectionExpensive: false, subnet: "255.255.255.255", ipAddress: "xxx.xxx.xx.x", strength: 99, ssid: "AndroidWifi"}
    isInternetReachable: true
    isConnected: true
    type: "wifi"
    isWifiEnabled: true
    
    为了开发目的,您需要做的就是伪造这种状态来测试不同的场景。这意味着在您的ConnectionProvider中,可以使用一些硬编码状态覆盖来自连接状态侦听器的任何内容

    这意味着所有消费者都应该知道这种状态(伪造或不伪造)。让他们根据这种状态做出不同的行为,因为它适合您的需要

    这将加快您的开发时间。一旦你对你的代码很满意,构建一个APK并在生产模式下使用你的应用程序。这应该只是一个验证步骤,记录任何问题,回到开发阶段,并构建发生问题的场景

    它有助于分析跟踪您的连接状态和异常/错误,因此您还可以将某些状态与任何问题联系起来。但希望此时您不会发现太多问题,因为此时您已经完成了大部分问题和实现

    有关更多信息,请参阅:


    我希望这会有帮助。

    嗯。。。我总是从我的笔记本电脑上关闭wifi,然后它会向
    NetInfo
    (我希望你正在使用)发送关于连接更改的信号。但是它不是傻瓜式的,它可能会在iOS(XCode)和Android(GenyMotion)上造成错误的解释。如果我构建开发版本并安装,它需要开发服务器。。。我无法构建发布版本并在每次测试时安装它。真的,没有其他选择吗?dev服务器是创建和交付每次更改的更新包的服务器。否则,你怎么会期望这种情况发生?也许你可以解释一下你想要实现的具体工作流程。我不完全清楚你的目标,我必须测试应用程序在连接不可用时的功能。我在问是否有一种方法可以在没有连接的情况下测试reac本机应用程序,但不构建生产版本和安装,因为我正在积极开发离线模式,我需要重新运行应用程序!我接受“不”作为回答。。。如果某事不可能的话。。阿门,这是不可能的。。。我只是在找一个小把戏,或者一个解决办法。。。如果在测试离线功能时它存在,我只需关闭计算机的WiFi,将模拟应用程序与开发服务器的连接保持不变。既然我已经提到了这一点,就像兹沃纳一样,也许你可以告诉我们为什么这在你的情况下不起作用我没有尝试过这种简单的方法。。。很抱歉这是一个有效的解决方案。谢谢,请将此添加到您的答案中以供将来参考