如何在不使用 iOS7 弃用方法的情况下获取 AirPlay 设备名称

Posted

技术标签:

【中文标题】如何在不使用 iOS7 弃用方法的情况下获取 AirPlay 设备名称【英文标题】:How to get the AirPlay device name without using iOS7 deprecated methods 【发布时间】:2014-07-18 12:54:07 【问题描述】:

我正在使用Get name of AirPlay device using AVPlayer 此处描述的方法来检索连接的 AirPlay 设备的名称。

AudiosessionGetPropertykAudioSession_AudioRouteKey_Outputs 在 iOS7 中已被弃用。我正在寻找另一种方法来做到这一点:)

【问题讨论】:

【参考方案1】:

从 iOS6 开始 AudioSession 向您公开 currentRoute,它允许检索它的端口信息以及侦听 audioRouteChangeNotification。 (因此您不再需要使用 AudioToolbox 框架中基于 C 的 API):

NSString* airplayName = [self activeAirplayOutputRouteName];
if (airplayName) 
    //airplay is active


(你要得到的是currentAudioRoute的portDescription):

- (NSString*)activeAirplayOutputRouteName

    AVAudioSession* audioSession = [AVAudioSession sharedInstance];
    AVAudioSessionRouteDescription* currentRoute = audioSession.currentRoute;
    for (AVAudioSessionPortDescription* outputPort in currentRoute.outputs)
        if ([outputPort.portType isEqualToString:AVAudioSessionPortAirPlay])
            return outputPort.portName;
    

    return nil;

【讨论】:

以上是关于如何在不使用 iOS7 弃用方法的情况下获取 AirPlay 设备名称的主要内容,如果未能解决你的问题,请参考以下文章

如何在不使用 each() 的情况下重写此函数? [复制]

如何在不使用 iOS 中的 UITableViewDelegate 方法的情况下获取选择的 UITableViewCell

在不使用 JEDI 的情况下检查管理员用户

如何在不使用已弃用的类的情况下编写 Hadoop map reduce 作业?

如何在不使用 Android SDK 的 playUri 的情况下获取歌曲元数据?

如何在不知道列类型的情况下获取列的值