最新的android不再发送UDP广播包

时间:2017-06-12 22:00:30

标签: android sockets udp cordova-plugins

所以我们一直在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。如果您遇到此问题,请分享。

1 个答案:

答案 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");
      }
   });
}