No route to host“ UserInfo={NSLocalizedDescription=No route to host, NSLocalizedFailureReason=Error

苹果手机升级到ios14.5系统后,使用GCDAsyncUdpSocke发送组播消息的时候,发现报错了,

Error Domain=NSPOSIXErrorDomain Code=65 "No route to host" UserInfo={NSLocalizedDescription=No route to host, NSLocalizedFailureReason=Error in send() function.}

网上也找过No route to host的解决方案,有别的人也遇到了相同的问题,也有很少一部分断断续续的解决方案,但是本人对socket理解有限,基本看不怎么懂,所以只能自己一边采坑一边到处找,经过一段时间的摸索,终于成功解决了问题,为了能给用样在采坑的朋友一些经验,所以用最通俗的语言做一下记录。

说明:以下的操作也许会有遗漏一些边角的配置(因为不知道,仅仅是个人理解),但是至少能解决问题了。

一. 问题产生原因:

ios14开始对权限增加了控制,对socket的组播也在设备端增加了权限,然后延迟了几个版本,在ios14.5(可能14.4.1就开始了)开始正式使用这个权限了,所以之前没做过处理的app,在14.5开始就报错了。

这里要区别对待,对于socket单播,点对点发送消息的app,是没有影响的,能正常发消息,接收消息。

对于socket组播,如果要发送udp组播消息,在发送消息的时候 send() 调用的时候,直接报错,并且调用socketClose的方法

多以要解决的就是发送组播的时候的问题

二.解决方案

1.向苹果申请组播权限:https://developer.apple.com/contact/request/networking-multicast

大概需要3天左右,成功后会有邮件返回

2.申请成功后,在开发者账号中,对appid进行编辑,拉倒最下面会多一个Additional Capabilities的选项,将 Multicast Networking 打钩

3.在你app的的xxxx.entitlements配置文件中添加com.apple.developer.networking.multicast的布尔值为yes

然后,真机运行,ok不报错了,能收发组播消息了

另外:不要忘记ios14.0就需要添加本地网络的权限 Privacy - Local Network Usage Description

参考:https://developer.apple.com/forums/thread/663271

里面的终端运行2个命令,不知道怎么搞,没弄,但是却不影响结果,不知道不弄命令有没有影响。

有帮助的话就点赞吧,哈哈



作者:小船2022
链接:https://www.jianshu.com/p/9f6e52dbecb5
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ipa equestOrder IOS 14.8 版本手机报错,信息如下,其他版本不报错。 equestOrder failed: {"code":0,"message":"Payment_appleiap:Error Domain=SKErrorDomain Code=0 \"An unknown error occurred\" UserInfo={NSLocalizedDescription=An unknown error occurred, NSUnderlyingError=0x282b4a670 {Error Domain=ASDErrorDomain Code=500 \"Unhandled exception\" UserInfo={NSUnderlyingError=0x282b4bcf0 {Error Domain=AMSErrorDomain Code=203 \"Bag Load Failed\" UserInfo={NSLocalizedFailureReason=Unable to retrieve p2-product-offers-batch-limit because we failed to load the bag., NSLocalizedDescription=Bag Load Failed, NSUnderlyingError=0x282b4b510 {Error Domain=AMSErrorDomain Code=203 \"Bag Load Failed\" UserInfo=0x283049b40 (not displayed)}}}, NSLocalizedFailureReason=An unknown error occurred, NSLocalizedDescription=Unhandled exception}}},https://ask.dcloud.net.cn/article/282","errCode":0,"errMsg":"Payment_appleiap:Error Domain=SKErrorDomain Code=0 \"An unknown error occurred\" UserInfo={NSLocalizedDescription=An unknown error occurred, NSUnderlyingError=0x282b4a670 {Error Domain=ASDErrorDomain Code=500 \"Unhandled exception\" UserInfo={NSUnderlyingError=0x282b4bcf0 {Error Domain=AMSErrorDomain Code=203 \"Bag Load Failed\" UserInfo={NSLocalizedFailureReason=Unable to retrieve p2-product-offers-batch-limit because we failed to load the bag., NSLocalizedDescription=Bag Load Failed, NSUnderlyingError=0x282b4b510 {Error Domain=AMSErrorDomain Code=203 \"Bag Load Failed\" UserInfo=0x283049b40 (not displayed)}}}, NSLocalizedFailureReason=An unknown error occurred, NSLocalizedDescription=Unhandled exception}}}
06-03
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值