所以我们一直在Android(三星Note 4)和iOS上运行以下代码,直到最新的手机开始推出android 7+(三星S8,OnePlus3T)。我们将发送广播以识别将响应此消息的其他系统。现在我们发现UDP在手机上被阻止了。
我们使用Evothings来测试UDP是否被阻止。以编程方式,我不认为我遗漏了任何东西来完成这项工作。
我们已经注意到WiFi在Android上运行的方式发生了变化。如果WiFi连接没有互联网,系统似乎表现不同。
function sendTestEmail(event) {
emails = []; // create empty email array
const users = event.data.val(); // get users, as you currently were.
for (var key in users) { // loop through users to retrieve key.
var email = users[key].email; // get email using key
emails.push(email); // push to emails array
}
return emails;
}
我们尝试了this answer,他们建议使用不同的端口。这里的大部分帖子都比7版旧,所以不要解决我们的问题。
同样,它仍适用于旧版本的Android和iOS。如果您遇到此问题,请分享。
答案 0 :(得分:1)
您应该尝试使用setBroadcast()函数。旧版本的cordova插件没有实现,请参阅https://github.com/MobileChromeApps/cordova-plugin-chrome-apps-sockets-udp/issues/7,因此您可能必须在使用之前检查它是否已定义。可能Evothings应用程序使用较旧版本的cordova插件。也许较新的Android设备默认关闭广播选项,因此调用setBroadcast()应该允许它工作。
// Set Broadcast (if available)
if (chrome.sockets.udp.setBroadcast != undefined) {
chrome.sockets.udp.setBroadcast(app.socketId, true, function (result) {
if (result < 0) {
console.log("setBroadcast failed");
}
else {
console.log("setBroadcast worked");
}
});
}