iOS在应用启动期间检测Airplay

时间:2017-08-08 04:14:45

标签: ios objective-c iphone uiwebview

我们正在构建一个iOS应用,用户可以在订阅模式下观看视频。

我们不希望用户将视频播放到任何其他设备。

视频正在UIWebView中播放。

我检查了各种在线资源:

  1. https://developer.apple.com/documentation/uikit/uiwebview/1617973-mediaplaybackallowsairplay?language=objc

  2. https://github.com/MobileVet/AirPlayDetector

  3. 上述选项无效。

    此外,我尝试了这段代码,但它总是返回1.

    if ([[UIScreen screens] count] < 2)) {
    //streaming
    }
    else {
    //mirroring
    }
    

    我也试过这段代码:

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(receiveAirPlayNotification:) name: UIScreenDidConnectNotification object:nil];
    

    此通知系统仅在我启动应用程序然后启用Airplay时才有效。如果我打开Airplay然后启动应用程序,则无法检测到任何内容。

    我需要检测应用启动时是否启用了镜像功能。我见过其他应用程序这样做,所以我相信这是可能的。

    请帮忙。

1 个答案:

答案 0 :(得分:2)

尝试此解决方案。

- (BOOL)isAirplayOn
{
    AVAudioSession* audioSession = [AVAudioSession sharedInstance];
    AVAudioSessionRouteDescription* currentRoute = audioSession.currentRoute;
    for (AVAudioSessionPortDescription* outputPort in currentRoute.outputs){
        if ([outputPort.portType isEqualToString:AVAudioSessionPortAirPlay])
            return YES;
    }
    return NO;
}