我刚刚启动了适用于 iOS 的新 Netflix 应用程序,在尝试将视频隔空播放到我的 Apple TV 时,我收到了以下消息:
所以我想知道他们是如何做到这一点的。是否有公共(public) API 可以让应用程序检索为 AirPlay 选择的 Apple TV 版本?或者 Netflix 是否使用其他方法来检测到这一点?
最佳答案
能够把这样的东西拉下来实际上并不难。我们将需要做两件事:1) 监听音频路由何时更改以了解我们何时连接到 AirPlay 设备,以及 2) 在网络中搜索 AirPlay 设备以获取信息。
一旦我们在音频路由更改时收到通知,我们就可以获取有关新路由的信息。对我们来说最重要的一点是 AirPlay 设备的输出端口的名称。一旦我们有了它,我们就可以遍历我们知道的所有 AirPlay 设备,以找到与输出端口名称匹配的设备。一旦我们有了那个设备,我们就可以从它的 TXT 记录中获取信息,其中包含有关其运行的软件版本的信息。
我已经向 Github 推送了一个示例项目,其中详细说明了我是如何完成这项工作的。这是一个非常简单的项目,只在路由更改时进行处理。如果您想使用此代码,那么您还需要在某些其他地方添加检查,例如当您呈现 MPMoviePlayerViewController 时。
编辑:请注意,这非常棘手,因为我们依赖端口名称与 AirPlay 设备名称相同。如果 Apple 更改其中任何一项,就会中断。或者,您可以将设备的 TXT 记录的“deviceid”字段与端口的 UID 进行比较,据我所知,它是附加了字符串“-airplay”的设备 ID。同样,如果 Apple 改变了它,它就会中断,但至少它是另一种潜在的检查方式。
关于ios - 是否有用于检索 Apple TV 版本的 API?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19236962/