uni-app在App端如何监听网络状态变化?

凌薇🍀 阅读 4

我在uni-app里开发App,想实时监听网络是否断开或者恢复,但onNetworkStatusChange在真机上好像没反应。

查了文档说要用uni.onNetworkStatusChange,但写了回调函数后,在iOS和Android上测试都没触发,是我用法不对吗?

目前代码是这样写的:

uni.onNetworkStatusChange(function(res) {
  console.log('网络状态变化', res.isConnected);
});
我来解答 赞 2 收藏
二维码
手机扫码查看
1 条解答
炳光
炳光 Lv1
你的代码写法没问题,问题出在两个地方:

1. 需要先调用 uni.getNetworkType() 初始化

App端得先触发一次网络状态获取,才能监听到后续变化。改一下:

// 先获取一次网络状态
uni.getNetworkType({
success: function() {
// 这里的success回调不代表有网,只是触发初始化
}
});

// 然后再监听
uni.onNetworkStatusChange(function(res) {
console.log('网络状态变化', res.isConnected);
});


2. 检查manifest.json权限

打开manifest.json → App常用其它设置 → 勾选“访问网络”,没这个权限的话整个网络功能都是废的。



还有一个小细节:onNetworkStatusChange 的回调只在网络状态真正发生变化时才触发。如果你测试时网络一直是连着的,当然不会打印。你断网或者恢复网络的时候应该能看到输出。

另外,这个监听在App切到后台时可能会失效,这是正常现象。如果你的需求是App在后台也要监听到,可以考虑用native插件或者uni-app的推送能力配合实现。

还有问题的话再贴代码上来看看。
点赞
2026-03-11 16:13