Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

从wifi切换到4G状态不对 #39

Closed
changpk opened this issue May 20, 2016 · 16 comments
Closed

从wifi切换到4G状态不对 #39

changpk opened this issue May 20, 2016 · 16 comments

Comments

@changpk
Copy link

changpk commented May 20, 2016

运行demo,系统是9.3.1的iphone6,从底部拉出系统菜单,关闭wifi按钮,从wifi切换到4g,会出现提示RealReachabilityStatus4G,接着再次提示为Network unreachable!从底部拉出系统菜单,打开wifi按钮,从4G切换到wifi也会出现Network wifi! Free,再次提示为Network unreachable!原因是第一次正常,第二次就都是notreachable,反复较快切换,这种情况出现的频率较为高;尤其是从wifi切换到4g,状态出现错误的概率很大(现象同前面描述);

@dustturtle
Copy link
Owner

你可以调试看下是不是ping timeout了。很可能是因为手机此时的移动网络不稳定造成的。过一段时间(2min左右)应该会自动恢复

@changpk
Copy link
Author

changpk commented May 22, 2016

调试过程中发现,中间通过FSM切换的时候,会出现这个不太正常的状态!您在wif和4g之间频繁切换的操作下,出现这种类似的情况概率高吗?因为一般这种提示是有个toast来告知用户,用户会觉得提示与当前网络状态不匹配!难道只能缩短ping的间隔来优化吗

@dustturtle
Copy link
Owner

dustturtle commented May 23, 2016

如果是采用这种toast的方式,那我建议可以不使用ping,只检测本地连接(local connection的检测可以单独使用)就可以了。

@changpk
Copy link
Author

changpk commented May 23, 2016

我想用这个库本质应该是为了解决连接上 wifi,但实际 wifi 没有连接英特网的情形!所以这种状态的问题,在 wifi 到4g 之间切换,4g 稳定后是会出现这种unreach 的链接状态,通过代码优化能否达到?是否是因为多个状态之间转换出现的问题!

@dustturtle
Copy link
Owner

不是多个状态之间转换出现的问题,而是ping操作实际的失败导致的

@changpk
Copy link
Author

changpk commented May 23, 2016

ping操作实际的失败导致的,这是指在 wifi 和4g 之间切换,ping 很容易为失败吗?稳定之后,多次获取当前状态也为 unreach,感觉及时性有点滞后!

@dustturtle
Copy link
Owner

这个和你切换后的网络状态有关的,丢包率比较高的情况下,容易失败

@changpk
Copy link
Author

changpk commented May 23, 2016

从 wife 切换到4g,然后读取 ReachabilityStatus status = [reachability currentReachabilityStatus];发现总是 unreach!从 wifi 切换到4g却会很快就正常状态!难道在4g 情况下,ping 很容易失败或者超时吗?

@dustturtle
Copy link
Owner

这个来回切换的场景出现这种情况的几率确实比较高,有优化空间。wifi网络的质量一般来说确实要好于移动网络。谢谢您的反馈和建议!

@dustturtle
Copy link
Owner

我刚才试了一下,4g下访问www.baidu.com非常慢!你试下切换成www.qq.com域名看看是不是就ok了

@dustturtle
Copy link
Owner

@changpk

@changpk
Copy link
Author

changpk commented May 23, 2016

刚实验了下,还是有问题!
typedef enum
{
RRStateInvalid = -1,
RRStateUnloaded = 0,
RRStateLoading,
RRStateUnReachable,
RRStateWIFI,
RRStateWWAN
}RRStateID;
_allStates = @[[ReachStateUnloaded state], [ReachStateUnReachable state], [ReachStateLoading state], [ReachStateWIFI state], [ReachStateWWAN state]];数组里面和上面的应该需要对应吧!在FSMEngine.m中 FSMEengine init 的方法中!

@dustturtle
Copy link
Owner

是对应的啊。你加我qq 123016764

@dustturtle
Copy link
Owner

已作优化,请使用master版本测试,谢谢!

@lleiwei
Copy link

lleiwei commented Jul 21, 2016

刚下了最新版本也是这种情况,从wifi切换到3g会收到两次通知,第一次是正确的,第二次就是没有连接。。

@dustturtle
Copy link
Owner

dustturtle commented Jul 21, 2016

如果数据网络连接不够稳定是可能会出现ping失败的情况,理论上过一会应该能够恢复。 如果只需要检测本地网络可以只使用LocalConnection模块: pod 'RealReachability/Connection' @wleix

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants