收藏
回答

wx.onGetWifiList在ios中放在onShow内也不进入回调?

回答关注问题邀请回答
收藏

2 个回答

  • jhl
    jhl
    06-21
    现在已解决 
    原来我是按顺序调用,但是不会触发。
     // wx.startWifi({
        //   success (res) {
        //     console.log(res.errMsg,"startWifi")
        //     wx.getWifiList({
        //       success (res) {
        //         console.log("获取WIFI列表---");
        //         wx.onGetWifiList((wifi)=>{
        //             console.log(wifi.wifiList,"wifi--------------");
        //             let data=wifi.wifiList||[];
        //             data.sort((a, b) =>  b.signalStrength - a.signalStrength)
        //             console.log(data,"data___________________========++++");
        //             data=data.splice(0,10)
        //             that.setData({
        //               wifiList:data,
        //             })
        //             that.getAddress()
        //         })
        //       },
        //       fail(err){
        //         console.log(err,"err=------");
        //         wx.hideLoading();
        //         that.setData({
        //           state:3
        //         })
        //         if(err.errCode==12001){
        //           wx.showToast({
        //             title: '当前系统不支持此功能',
        //             icon: 'error',
        //             duration: 2000
        //           });
        //         }else if(err.errCode==12005){
        //           wx.showToast({
        //             title: 'WI-FI开关未打开',
        //             icon: 'error',
        //             duration: 2000
        //           });
        //         }else if(err.errCode==12006){
        //           wx.showToast({
        //             title: '未打开 GPS 定位开关',
        //             icon: 'error',
        //             duration: 2000
        //           });
        //         }else{
        //           wx.showToast({
        //             title: '获取wifi失败',
        //             icon: 'error',
        //             duration: 2000
        //           });
        //         }
                
        //       }
        //     })
        //   },
        //   fail(res){
        //     console.log(res,"fail");
        //     wx.hideLoading();
        //     that.setData({
        //       state:3
        //     })
        //     wx.showToast({
        //       title: '获取wifi失败',
        //       icon: 'error',
        //       duration: 2000
        //     });
        //   },
          
        // })
    要改成这样,换一下顺序就能触发了,是不是感觉很神奇。
    const getWifiList=()=>{
          wx.getWifiList({
              
            success (res) {
              wx.onGetWifiList((wifi)=>{
                 
                  let data=wifi.wifiList||[];
                  data.sort((a, b) =>  b.signalStrength - a.signalStrength)
                
                  data=data.splice(0,10)
                  that.setData({
                    wifiList:data,
                  })
                  that.getAddress()
              })
            },
            fail(err){
            
              wx.hideLoading();
              that.setData({
                state:3
              })
              if(err.errCode==12001){
                wx.showToast({
                  title'当前系统不支持此功能',
                  icon'error',
                  duration2000
                });
              }else if(err.errCode==12005){
                wx.showToast({
                  title'WI-FI开关未打开',
                  icon'error',
                  duration2000
                });
              }else if(err.errCode==12006){
                wx.showToast({
                  title'未打开 GPS 定位开关',
                  icon'error',
                  duration2000
                });
              }else{
                wx.showToast({
                  title'获取wifi失败',
                  icon'error',
                  duration2000
                });
              }
              
            }
          })
        }
        const startWifi = () => {
          wx.startWifi({
            success: getWifiList,
            fail(res){
              console.log(res,"fail");
              wx.hideLoading();
              that.setData({
                state:3
              })
              wx.showToast({
                title'获取wifi失败',
                icon'error',
                duration2000
              });
            },
          })
        }
    
    
        wx.getSystemInfo({
          success(res) {
            const isIOS = res.platform === 'ios'
            if (isIOS) {
              wx.showModal({
                title'提示',
                content'由于系统限制,iOS用户请手动进入系统WiFi页面,然后返回小程序。',
                showCancelfalse,
                success() {
                  startWifi()
                }
              })
              return
            }
            startWifi()
          }
        })
    
    06-21
    有用
    回复
  • 风清雾云开见日出
    风清雾云开见日出
    06-21

    参考文档:https://developers.weixin.qq.com/community/develop/doc/00064e1197852883e529cd7665bc09?_at=1718950981938

    06-21
    有用
    回复 5
    • jhl
      jhl
      06-21
      不知道你要我参考这个文档的哪部分,上面的正文还是评论里的解决方案?调用时序 我在onLoad里按顺序调的 这个监听回调就是解决方案里在onShow加这个监听事件。但是从ios无线列表扫描返回微信 。这个onGetWifiList并没有触发。
      06-21
      回复
    • 风清雾云开见日出
      风清雾云开见日出
      06-21回复jhl
      06-21
      回复
    • 风清雾云开见日出
      风清雾云开见日出
      06-21回复jhl
      并且你的onGetWifiList方法不用单独写在onshow中啊,你在onload中按照这个顺序调用,通过getWifiList执行成功就调用onGetWifiList方法,ios通过getWifiList进入WiFi设置页面,搜索到wifi后退回页面,就会执行这个onGetWifiList的回调方法的
      06-21
      回复
    • jhl
      jhl
      06-21回复风清雾云开见日出
      已经解决了,换一下书写顺序就行了,
      06-21
      回复
    • 风清雾云开见日出
      风清雾云开见日出
      06-21回复jhl
      解决就行
      06-21
      回复
登录 后发表内容