在使用udp功能的时候发现UDP通信在IOS系统下需要打开调试模式才能正常收发数据,而体验版不能发送数据。
我又换了安卓系统来测试也存在这个情况。
请问这个是什么情况,又遇到过这种问题的朋友嘛?
希望官方解答一下谢谢。
IOS:苹果8 (IOS 11.3.1)
安卓:华为MATE20 (安卓9.0)
代码如下:
var util = require( '../../utils/util.js' ) var udpSocket = wx.createUDPSocket(); var locationPort = udpSocket.bind(); Page({ /** * 页面的初始数据 */ data: { messageList: [] }, mydata: { message: '' , remoteUrl: { ip: '' , port: -1 }, isSend: false }, addMessage(event) { console.log(event) this .mydata.message = event.detail.value }, sendMessage() { if ( this .mydata.isSend) { return ; } this .mydata.isSend = true let ip = this .mydata.remoteUrl.ip let port = this .mydata.remoteUrl.port let message = this .mydata.message if (message.trim() === '' ) { wx.showToast({ title: '请输入内容' , }) return ; } udpSocket.send({ address: ip, port: port, message: message }) this .mydata.isSend = false let list = this .data.messageList let obj = { text: message, from: 2 } list.push(obj) this .setData({ messageList: list }) }, initUdpSocket() { if (udpSocket === null ) { console.log( '暂不支持' ) return ; } this .setData({ 'locationUrl.port' : locationPort }) udpSocket.onListening( function (res) { console.log( '监听中...' ) console.log(res) }) let that = this udpSocket.onMessage( function (res) { console.log(res.message) let str = util.newAb2Str(res.message) console.log( 'str===' + str) let list = that.data.messageList let obj = { text: str, from: 1 } list.push(obj) that.setData({ messageList: list }) }) }, /** * 输入ip/端口号 */ addIp: function (event) { this .mydata.remoteUrl.ip = event.detail.value }, addPort: function (event) { this .mydata.remoteUrl.port = event.detail.value } }) |
有些时候,不光UDP有这种情况,普通的HTTP请求也存在这种情况。见怪不怪了已经。
分享测试的时候,一但出现这种情况,就打开调试模式重启就好了。
我已经不把它当成bug,而是当成一个潜规则了
请问解决了吗
麻烦提供能复现问题的代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)