我们正在构建一个iOS应用程序,用户可以在其中以订阅模式观看视频。
我们不希望用户将视频隔空播放到任何其他设备。
视频正在UIWebView中播放。
我查看了各种在线资源:
-
https://developer.apple.com/documentation/uikit/uiwebview/1617973-mediaplaybackallowsairplay?language=objc
-
https://github.com/MobileVet/AirPlayDetector
上述选项不起作用。
另外,我尝试了这段代码,但它总是返回 1。
if ([[UIScreen screens] count] < 2)) {
//streaming
}
else {
//mirroring
}
我也尝试过这段代码:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(receiveAirPlayNotification:) name: UIScreenDidConnectNotification object:nil];
此通知系统仅在我启动应用程序然后打开Airplay时有效。如果我打开Airplay然后启动应用程序,则不会检测到任何内容。
我需要检测应用程序启动时镜像是否打开。我已经看到其他应用程序这样做,所以我相信这是可能的。
请帮忙。
试试这个解决方案。
- (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;
}