React 本机 UDP 不会从 iOS 发送任何消息,有人让它工作吗?

问题描述 投票:0回答:1

我正在尝试使用react-native-udp,但它在iOS上不起作用。在 Android 上没问题,但在 iOS 上它不发送任何消息。该应用程序安装后会请求许可,但即使拥有权限也无法运行。有人可以让它在 iOS 上运行吗?

代码示例

const socket = dgram.createSocket({
        type: 'udp4',
        debug: true,
    })
    socket.bind(BROADCAST_PORT)
    socket.once('listening', function () {
        socket.send(MSG, undefined, undefined, BROADCAST_PORT, BROADCAST_ADDR, function (err) {
            if (err) console.log("ERR:"+err)
        })
    })
  • iOS-14.3
  • 反应原生 - 0.63.4
  • react-native-udp - 4.1.2
ios udp
1个回答
0
投票

我遇到了同样的问题([电子邮件受保护]),

我找到了解决这个问题的方法: https://www.npmjs.com/package/@generac/react-native-local-network-permission

创建socket之前先获取用户权限,

import {
  checkLocalNetworkAccess,
  requestLocalNetworkAccess,
} from '@generac/react-native-local-network-permission';

await requestLocalNetworkAccess(); // this will pop-up the dialog for local network permission

const hasAccess = await checkLocalNetworkAccess(); // check if you got access

if(hasAccess) {
const socket = dgram.createSocket({
        type: 'udp4',
        debug: true,
    })
    --- remaining Logic ---
}

注意:确保您正在设备上进行测试,这只会在您的设备上打开本地网络请求的对话框。

这更多的是一种解决方法,而不是解决方案。

苹果没有API可以事先征求许可, 有关如何存档此类内容的更多信息: iOS 14 如何触发本地网络对话框并检查用户答案?

我希望他们更新库并修复它。 如果您想贡献,他们有一个针对 ios 14+ 的开放问题:这里

© www.soinside.com 2019 - 2024. All rights reserved.