当我将Android的模拟器切换到飞行模式时,应用程序正在开发崩溃,因为它需要开发服务器。
我需要为我的应用测试离线行为,所以我问你如何使用应用程序离线工作到模拟器中?
目标:当连接不可用时,我必须测试应用程序的功能。我问是否有办法在没有连接的情况下测试重新启动的应用程序,但没有构建生产版本和安装,因为我正在积极开发离线模式,我需要重新运行应用程序houndreds次
答案 0 :(得分:3)
正如@zvona所提到的,您可以通过关闭计算机的wifi 而不是模拟器来开发离线而无需wifi连接。
如果您需要测试您的应用是否在飞行模式下工作,那么您需要构建应用并安装IPA(iOS)/ APK(Android)版本。
答案 1 :(得分:1)
答案 2 :(得分:1)
要确定用户是否离线并在这种情况下开发Android Apps并非那么简单。
具有WiFi可用或数据连接可用与拥有Internet不同。如果在仿真器或设备中将其关闭,则会丢失Metro Server。当您关闭计算机的WiFi时,您将失去Internet连接。
如果用户的信号非常差,连接和Internet均可用,并且您的应用下载了很大的文件,该怎么办。您可能应该提醒用户可能要花很长时间,然后问他是否愿意在例如信号更好的情况下稍后下载。
如果用户只有移动数据连接,没有WiFi,而您的下载又会浪费他们所有的数据量怎么办?
如何通知用户问题的原因。 “由于离线,文件无法下载”?离线对用户意味着什么? “没有WiFi?”,“没有数据限额”? “没信号”? “数据连接断开”? ...
所以我不是用离线这个词,而是让我们谈谈连通性。我认为要正确开发一个具有连通性的应用程序,您必须牢记以上所有情况。就像你说的那样,能够轻松地模拟它们。
此外,您还希望能够快速仿真它们,而与模拟器,设备或WiFi设置的交互很少。甚至可能用一些Jest Testing框架来模拟它们。后者超出了范围,但很高兴知道这一点。
我对您的建议是
实现一个ConnectivityProvider,以侦听连接中的更改并共享连接状态。
使那些需要连通性意识的组件成为此上下文的使用者,因此,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
出于开发目的,您需要做的就是伪造此状态以测试不同的场景。这意味着您的ConnectivityProvider中的某些硬编码状态可以覆盖来自连接状态侦听器的所有内容。
这意味着所有消费者都应该知道这种状态(伪造与否)。根据您的需要,让它们的行为因状态而异。
这将加快您的开发时间。对代码感到满意后,请构建一个APK并在生产模式下玩您的应用。这应该只是一个验证步骤,记下所有问题,然后再回过头来开发并设想发生这些情况的场景。
让Google Analytics(分析)跟踪您的连接状态以及异常/错误是有帮助的,因此您还可以将某些状态与任何问题相关联。但是希望在这一点上您应该还没有发现太多,因为在这一点上您已经完成了很多问题和实现。
有关更多信息,请参见:
https://github.com/react-native-community/react-native-netinfo
https://rnfirebase.io/docs/v4.1.x/analytics/reference/analytics
我希望这会有所帮助。
答案 3 :(得分:-1)