如何在airplay中区分apple tv和其他设备?

Posted

技术标签:

【中文标题】如何在airplay中区分apple tv和其他设备?【英文标题】:How to differentiate apple tv and other devices in airplay? 【发布时间】:2016-03-08 09:38:11 【问题描述】:

我正在尝试通过 Airplay 连接 Apple tv,但如果我连接任何其他外部设备(如蓝牙)或其他设备,它显示为窗口中连接的设备,则问题是有一段时间了。所以我想确定连接了哪个设备,只有在连接 Apple tv 时才需要启用。

我如何识别它是 Apple tv 还是其他设备?

这就是我创建 Airplay 自定义按钮的方式

  for (UIButton *button in volumeView.subviews) 
            if ([button isKindOfClass:[UIButton class]]) 
                self.airplayButton = (UIButton*)button;
                button.frame = CGRectMake(0, 0, 30, 23);
                button.backgroundColor = [UIColor clearColor];
                [self.airplayButton addObserver:self forKeyPath:@"alpha" options:NSKeyValueObservingOptionNew context:nil];

            

        

因此,即使连接了其他一些设备,按钮的 alpha 值也总是会发生变化。

【问题讨论】:

【参考方案1】:

我以前看过这个,没有简单的方法来确定连接的设备是否是 Apple TV,有一个 Airplay Picker 可以做到这一点,但它背后的代码/功能似乎不是可用。

您能做到的最好的方法是监视添加/删除的其他屏幕,然后仅在屏幕能够执行您需要的操作时才显示您的外部内容。

我之前在某处读到过,您可以获得播放设备的功能并使用此信息来检测 Apple TV,但不幸的是,我目前找不到它。如果我找到它,我会添加评论。

目前,您最好的选择是使用guide 中描述的概念

提供的代码是在objective-c中,但它很容易转换为swift,这是你应该看的主要部分

- (void)checkForExistingScreenAndInitializeIfPresent



    if ([[UIScreen screens] count] > 1)

    

        // Get the screen object that represents the external display.

        UIScreen *secondScreen = [[UIScreen screens] objectAtIndex:1];

        // Get the screen's bounds so that you can create a window of the correct size.

        CGRect screenBounds = secondScreen.bounds;



        self.secondWindow = [[UIWindow alloc] initWithFrame:screenBounds];

        self.secondWindow.screen = secondScreen;



        // Set up initial content to display...

        // Show the window.

        self.secondWindow.hidden = NO;

    


就像我说的那样,您可以对此进行编码,以便它检查设备是否支持某些分辨率,这样您就可以排除不支持您的 UI 的设备

一些额外的资源:@​​987654322@

【讨论】:

以上是关于如何在airplay中区分apple tv和其他设备?的主要内容,如果未能解决你的问题,请参考以下文章

由于 tvOS 10.2 Apple TV 显示 Airplay 连接需要 iOS 7.1 或更高版本错误

AirPlay:连接到 Apple TV 时音量控制被禁用

新 Apple TV(第 3 代)上的 Airplay,第二个屏幕不是 1080p

无法使用 airplay (Apple TV) 将自定义视图推送到外部显示器

Airplay:从 MPMoviePlayerController 播放电影只会导致音频流式传输到 Apple tv

我可以在 iOS 4.3 中使用 AirPlay 将静止图像发送到 Apple TV