ReactNative 网络库

2023-09-13 19:57:13
  • What

JS判断网络状态不准确

  • react-native-netinfo在Android中的结构

type-CellularGeneration:G网模式枚举

type-ConnectionType:网络连接类型

AmazonFireDeviceConnectivityPoller:Amazon设备网络适配,可忽略

BroadcastReceiverConnectivityReceiver:Android7以下使用此网络监听

ConnectivityReceiver:网络监听抽象类

NetInfoModule:JS调用Java实现类

NetInfoPackage:JS调用Java方法及视图的注册包裹类

NetInfoUtils:工具类,wifi权限检查

NetworkCallbackConnectivityReceiver:Android7及以上网络监听

三、Android中isConnected()与isAvailable()区别

  1. isAvailable 属性指示设备是否可以访问任何网络(包括 Wi-Fi 或移动数据网络)。即使设备已连接到某个网络,也不一定意味着它可以访问互联网或其他资源。因此,isAvailable 属性只有在设备已经配置并且准备好发送和接收数据的情况下设置为 true。
  2. isConnected 属性指示设备是否已连接到任何网络(包括 Wi-Fi 或移动数据网络)。当设备成功连接到一个 Wi-Fi 热点或者使用运营商提供的移动数据连接时,该属性就会设置为 true。

在WLAN设置界面状态

输出

显示连接已保存,但标题栏没有,即没有实质连接上

输出为:not connect, available

显示连接已保存,标题栏也有已连接上的图标 

输出为:connect, available

选择不保存后  

输出为:not connect, available

选择连接,在正在获取IP地址时 

输出为:not connect, not available

连接上后

输出为:connect, available

四、目前react-native-netinfo中7.0后使用NetworkCallbackConnectivityReceiver判断isInternetReachable有两个问题。

1)针对vpn网络连接方式,即使有网络也判定为无网,最新源码已修复,待同步更新

2)针对热点wifi,首次判断时,目前isInternetReachable是准确的,但是在分享热点的实际网络变更时,isInternetReachable判断是不一定准确(当无网变为有网准确,当有网变为无网不准确,此时即时无网,isInternetReachable\isAvailable\isConnected也返回true的状态)。

3)isInternetReachable值确认,分析需要判断不同方式的可用性以及网络延迟

总结:isInternetReachable在android原生,会存在无网返回true,有网返回false

通过设置useNativeReachability:false走js里的https:baidu.com,仅会存在无网时返回true的情况

解决方案:针对isInternetReachable使用连网方式不准确的场景,及时进行update操作。

  1. 海豚连接断开时update
  2. Http请求
更多推荐

[Django-1] 快速建立项目

初始化Django初始化项目创建app项目和app的关系下面的代码一般放在view.py中项目启动项目中中的urls.py和app中的urls.py的关系ModelDjango生成表查询理解初始化项目python-mpipinstallDjangocd到想要创建项目的目录django-adminstartproject

【云原生之Docker实战】使用Docker部署flatnotes笔记工具

【云原生之Docker实战】使用Docker部署flatnotes笔记工具一、flatnotes介绍1.1flatnotes简介1.2flatnotes特点二、本地环境介绍2.1本地环境规划2.2本次实践介绍三、本地环境检查3.1检查Docker服务状态3.2检查Docker版本3.3检查dockercompose版本

036:vue导出页面生成pdf文件

第036个查看专栏目录:VUE------elementUI专栏目标在vue和elementUI联合技术栈的操控下,本专栏提供行之有效的源代码示例和信息点介绍,做到灵活运用。(1)提供vue2的一些基本操作:安装、引用,模板使用,computed,watch,生命周期(beforeCreate,created,befo

Hadoop sqoop

0目录1.安装sqoop2.补充sqoop流程1.安装sqoop解压、改名[root@kb129install]#tar-xvf./sqoop-1.4.7.tar.gz-C/opt/soft/[root@kb129soft]#mvsqoop-1.4.7/sqoop147拷贝配置文件[root@kb129conf]#pw

[k8s] kubectl port-forward 和kubectl expose的区别

kubectlport-forward和kubectlexpose是Kubernetes命令行工具kubectl提供的两种不同方式来公开服务。kubectlport-forwardkubectlport-forward命令用于在本地主机和集群内部的Pod之间建立一个临时的端口转发通道。该命令将本地机器上的一个端口绑定到

DVWA靶机,通过XSS盗取cookie登录

文章目录一发现XSS漏洞1.1登录DVWA,找到XSS(DOM)模块,测试XSS是否存在。1.2在选项的传参后面加入一串js代码,也就是可以XSS弹出的代码。payload如下:二、盗取cookie2.1在XSS平台上搭建一个测试项目。这里用的是免费的XSS平台:选择【我的项目】->【创建】,创建一个测试项目:2.2配

Java高级-注解

注解1.介绍2.元注解3.注解的解析4.注解的应用场景1.介绍注解Annotation就是Java代码里的特殊标记,作用是让其他程序根据注解信息来决定什么是执行该程序注解:注解可以在类上、构造器上、方法上、成员变量上、参数上等位置自定义注解/***自定义注解*/public@interfaceMyTest1{Strin

IntelliJ IDEA 2023.2 最新版如何激活?IntelliJ IDEA 2023.2最新版激活方法及验证ja-netfilter配置成功提示

🌷🍁博主猫头虎带您GotoNewWorld.✨🍁🦄博客首页——猫头虎的博客🎐🐳《面试题大全专栏》文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺🌊《IDEA开发秘籍专栏》学会IDEA常用操作,工作效率翻倍~💐🌊《100天精通Golang(基础入门篇)》学会Golang语言,畅玩云原生,走遍大

SpringBoot +MyBatis批量插入数据

💍背景介绍在最近的开发过程中,遇到了往数据库中表中插入大量的数据。有一个全国银行各分行的信息,共计148032条数据文件有8.45MB,因为考虑到数据量比较大,就想着导入到MySQL看一看需要多长时间。💍方案一:用for语句循环插入(不推荐)使用for循环语句将,将数据一条条插入。insertintot_bankv

【LeetCode-面试经典150题-day25】

目录530.二叉搜索树的最小绝对差230.二叉搜索树中第K小的元素98.验证二叉搜索树530.二叉搜索树的最小绝对差题意:给你一个二叉搜索树的根节点root,返回树中任意两不同节点值之间的最小差值。差值是一个正数,其数值等于两值之差的绝对值。树中节点的数目范围是[2,100]0<=Node.val<=105【输入样例】

React+Typescript项目环境中搭建并使用redux环境

前几篇文章我们的项目已经开始功能渐渐完善了那么我们来说最后一个点redux这个并不需要我们多努力其实官方文档给到已经算是很全面了我们可以直接访问地址TypeScript中文手册中文手册和官方是一样的而且对我们非常友好我们会在左侧导航栏中找到一个React点进去进入之后一直往下翻我们就可以看到Redux部分我们直接用他这

热文推荐