【Delphi】IOS 15 UDP 广播消息(局域网)

开发环境:

              FMX  

              Delphi 11.2 试用版

              IOS 15.0.2(iPhone 13 Pro Max)

              Android 10 手机(主要用来测试)  

              局域网(wifi环境)

在 IOS 中使用UDP,如果使用苹果的Bonjour (也就是 mDNS) 就要在苹果开发者后台申请权限。我们如果不使用 Bonjour,而直接使用Delphi 中 Indy 组件,就不需要申请权限,也能够发送和接收。特此记录下我的开发过程,以帮助有需要的朋友。

UDP 使用 Indy 的控件 TIdUDPServer 和 TIdUDPClient。

测试程序分为两大部分,一部分是 UDPServer,用来接收UDP消息,一部分是UDPClient,用来广播或者定向发送消息。

程序界面如下:

【Delphi】IOS 15 UDP 广播消息(局域网)_第1张图片

按下:【打开 UDPServer】就会打开UDP服务,默认端口号:8192。正常情况下,打开UDP服务都会成功,而且通过其他手机或者电脑给打开UDP服务的手机发送消息,或者广播消息,IOS手机是可以成功收到消息的,系统没有任何权限方面信息提示。

首次运行按下【发送】或者【广播】按键时,系统提示权限请求,要求用户确认。

【Delphi】IOS 15 UDP 广播消息(局域网)_第2张图片

 如果选择 不允许 ,那么以后这个程序再也无法发送UDP消息(但不影响接收),如果选择 ,那么后续程序就可以 发送 或者 广播 UDP消息了。

特别说明:

  1. IOS 手机接收其他设备的定向发送UDP消息时,能正确的收到一条信息(IPv4),如果其他设备使用的是广播消息,则IOS手机会收到两条UDP消息,一条是IPv4的,一条是IPv6的。
  2. 如果在某种情况下(目前未找到原因),手机并没有弹出授权框,此时只能卸载程序,重新安装,或者在程序界面上放置一个 WebBrowser 控件,随便访问下一个网址,系统就一定会弹出授权框。
  3. 通过网络授权的程序,会出现在【设置】中,同时可以看到(如果授权未通过,则可能在【设置】中都看不到程序):
  4. 【Delphi】IOS 15 UDP 广播消息(局域网)_第3张图片

由于IOS需要上架,座椅这里提供程序源代码和Android编译好的程序下载:

1. Android APK 程序

2. 源程序

你可能感兴趣的:(Delphi,IOS,ios,UDP,fmxUDP,Delphi,Android)