iOS Xcode 设备上进行无线调试

iOS Xcode 设备上进行无线调试,第1张

Xcode 进行真机测试可以不用数据线进行连接了

PS:这是WWDC2017的新功能,iOS11以上,Xcode9这是刚性要求。

步骤:

1.先将手机连接上 Xcode ,打开 Xcode 菜单:Windows->Device and Simulators。找到连接上的设备,把Connect via network选项打勾。

2.将 iPhone  和 Mac 连接同一个 WiFi, 即连接同一个网络.

断开 iPhone 和 Mac 的连接

4.在左侧的设备列表中选中你的 iPhone 设备,右键会d出一个菜单,选择 Connect via IP Address..,如图一:

图一.png

5.在新的对话框中填写手机连接网络的 IP 地址,点击 Connect ,如图二:

图二.png

6.连接后,在你的iPhone 后面会出现一个网络的图标,表示连接成功,下面可以真机调试了.

图三.png

大功告成!!

在iOS 14系统中苹果新增加了本地网络的授权,本地网络(Local Network)是在当app使用Bonjour服务或者访问本地局域网时需要用户授权,如:

Network.framework(NWBrowser,NWListener.Service)

Foundation(NetService)

MultipeerConnectivity(蓝牙)

Dnssd(发现,发布和解析局域网或广域网上的网络服务)

Bonjour主要做本地通信和智能交互的。

通常我们是通过 NSNetService 和 NSNetServiceBrowser 来使用 Bonjour 的,前者用于建立与发布 service,后者用于监听查询网络上的 service。

在我们的项目中因为使用了第三方KTVCocoaHTTPServer,在查看其中源码发现这个库中使用了NSNetService:

因此在用户第一次启动项目是会d出本地网络授权的提示。

验证环境:

iPad iOS 14

Xcode 11

通过把本地网路权限关闭去验证是否对项目有影响:

1、我们项目之所以会提示本地网络授权是因为KTVHTTPCache依赖于KTVCocoaHTTPServer,是因为KTVHTTPCache使用的音视频缓存方案:本地实现http service。

在iOS本地开启Local Server服务,然后使用播放控件请求本地Local Server服务,本地的服务再不断请求视频地址获取视频流,本地服务请求的过程中把视频缓存到本地,大体的思路是这样的。而实现loacl Service要基于Bonjour库,通过 Bonjour,一个应用程序 publish 一个网络服务 service,然后网络中的其他程序就能自动发现这个 service,从而可以向这个 service 查询其 ip 和 port,然后通过获得的 ip 和 port 建立 socket 链接进行通信。通常我们是通过 NSNetService 和 NSNetServiceBrowser 来使用 Bonjour 的,前者用于建立与发布 service,后者用于监听查询网络上的 service,因此在iOS14设备上边提示了本地网路授权。

2、为了验证关闭本地网络授权是否会对项目有所影响,先找到KTVHTTPCache库在项目中的缓存目录:tmp->KTVHTTPCache,最新安装的app并没有任何缓存,然后运行app,播放视频再次查看缓存目录下有了视频缓存,目前调研结果是关闭本地网络权限并不会对我们项目产生影响。

使用另外一种方案:

使用IOS原生API ,使用 AVAssetResourceLoader,在不改变 AVPlayer API 的情况下,对播放的音视频进行缓存。

这种方案只能是使用AVPlayer才可以,使用第三方播放器除非它也暴露出了类似于AVAssetResourceLoader这样的协议。

相关三方很多 VIMediaCache https://github.com/vitoziv/VIMediaCache

这种方案测试不会提示本地网络授权管理


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11602652.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存