是否有任何公共 api 来检测可用的 AirPlay

Posted

技术标签:

【中文标题】是否有任何公共 api 来检测可用的 AirPlay【英文标题】:Is there any public api to detect AirPlay available or not 【发布时间】:2016-06-09 16:42:44 【问题描述】:

我已实现 MPVolumeView 以显示 Airplay 选项,但如果 Airplay 选项/源不再可用,我不知道如何隐藏 MPVolumeView。

是否有任何可以检测 AirPlay 选项/来源的公共 API 可用或不可用。这样该应用程序就可以隐藏/显示播放选项。

注意:我使用的是自定义播放器,而不是默认的 MPMoviePlayerController

谢谢!

【问题讨论】:

【参考方案1】:

我看到了两种可行的方法:

    将 MPVolumeView 的 showsVolumeSlider 设置为 NO,AirPlay 路由按钮选择器“...仅在有可用的 AirPlay 输出设备时可见。”

来源:https://developer.apple.com/library/ios/documentation/AudioVideo/Conceptual/AirPlayGuide/EnrichYourAppforAirPlay/EnrichYourAppforAirPlay.html

    为 MPVolumeViewWirelessRoutesAvailableDidChangeNotification 添加观察者并隐藏或删除您的子视图。

    - (void)viewWillAppear:(BOOL)animated 
      [[NSNotificationCenter defaultCenter] addObserver:self
                                               selector:@selector(handleWirelessRoutesDidChange:)
                                                   name:MPVolumeViewWirelessRoutesAvailableDidChangeNotification object:nil];
    
    
    - (void)viewWillDisappear:(BOOL)animated 
        [[NSNotificationCenter defaultCenter] removeObserver:self];
    
    
    - (void)handleWirelessRoutesDidChange:(NSNotification *)notification 
        NSLog(@"Wireless routes did change: %@", notification);
        // Hide or remove your MPVolumeView
    
    

【讨论】:

感谢@Brady White 提供此信息,但如果我记录通知(设备已连接或已断开连接),则此信息显示 NSConcreteNotification 0x13c5dccf0 name = MPVolumeViewWirelessRoutesAvailableDidChangeNotification;对象 = > 我无法获得任何与已连接且当前正在连接的播放设备相关的信息 我的案例研究: 案例 1) 应用启动时,没有可见的 AirPlay 指示器;但是在操作系统中,我看到有两个 AppleTV 设备可用。如果我打开已与手机配对的蓝牙扬声器,扬声器就会连接,并且 AirPlay 图标变得可见。如果我单击 AirPlay 图标,我会在列表中看到蓝牙扬声器和两个 AppleTV 设备。如果我关闭蓝牙扬声器,Airplay 图标就会消失。我在下一条评论中的下一个案例: 案例 2) 应用启动时,AirPlay 指示灯不可见;但是在操作系统中,我看到有两个 AppleTV 设备可用。如果我打开已与手机配对的蓝牙扬声器,扬声器就会连接,并且 AirPlay 图标变得可见。如果我单击 AirPlay 图标,我会在列表中看到蓝牙扬声器和两个 AppleTV 设备。如果我现在选择其中一台 AppleTV 设备,音乐会正确路由,并且 AirPlay 仍然可见。 _P.T.O _ 如果我在连接到 AppleTV 时关闭蓝牙扬声器,AirPlay 图标仍然可见。如果我按下 AirPlay 图标并选择“电话”作为输出,AirPlay 图标就会消失。我想要的功能:当网络上有 AirPlay 设备或有蓝牙扬声器可用时,AirPlay 图标可见。如果唯一的音频输出选项是“电话”,则 AirPlay 图标不可见 感谢您的帮助。请检查我上面所有的 cmets,让我知道如何解决我的问题。【参考方案2】:

除了正确的响应 MPVolumeViewWirelessRoutesAvailableDidChangeNotification 它已被弃用 AVRouteDetectorMultipleRoutesDetectedDidChangeNotification

【讨论】:

以上是关于是否有任何公共 api 来检测可用的 AirPlay的主要内容,如果未能解决你的问题,请参考以下文章

是否有任何带有历史事实数据库的公共 API?

CoreWLAN 或任何其他适用于 IOS 7 的公共 API

是否有*官方*方法来检测 Windows 11?

用于管理推送通知的 iOS API

如何检查对现有公共 api 的更改

专业稳定的微信域名被封检测API平台!