iOS 在应用程序启动期间检测 Airplay

Vit*_*yal 5 iphone objective-c uiwebview ios

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

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

视频正在 UIWebView 内播放。

我查了各种网上资源:

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

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

上述选项均无效。

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

if ([[UIScreen screens] count] < 2)) {
//streaming
}
else {
//mirroring
}
Run Code Online (Sandbox Code Playgroud)

我也尝试过这段代码:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(receiveAirPlayNotification:) name: UIScreenDidConnectNotification object:nil];
Run Code Online (Sandbox Code Playgroud)

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

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

请帮忙。

小智 5

尝试这个解决方案。

- (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;
}
Run Code Online (Sandbox Code Playgroud)