是否可以通过编程启用airplay镜像?

oli*_*ver 2 xcode mirror ios airplay swift

关于这个问题,我到处走走了很多,但是发现的所有东西都已经过时了。

本文来自2012年,并指出这是不可能的

基本上,我希望能够开始通过airplay将我的iPhone镜像到我的应用程序中的另一个屏幕,我想知道现在是否有可能。我发现的所有文章都说不可能,或者如果完成,则该应用将不会被应用商店接受。

Max*_*hun 5

从iOS 11开始可以实现自己的AirPlay选择器视图。请检查AVRoutePickerView。它允许您控制与应用程序中不同AppleTV /外部屏幕的连接。参见示例:

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    AVRoutePickerView *routePickerView = [[AVRoutePickerView alloc] initWithFrame:CGRectMake(0.0f, 30.0f, 30.0f, 30.0f)];
    routePickerView.backgroundColor = [UIColor lightGrayColor];
    [self.view addSubview:routePickerView];

    AVAsset *asset = [AVAsset assetWithURL:[NSURL URLWithString:@"https://bitdash-a.akamaihd.net/content/MI201109210084_1/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8"]];
    AVPlayerItem *playerItem = [[AVPlayerItem alloc] initWithAsset:asset];
    AVPlayer *player = [AVPlayer playerWithPlayerItem:playerItem];
    AVPlayerLayer *playerLayer = [AVPlayerLayer playerLayerWithPlayer:player];
    [playerLayer setFrame:CGRectMake(0.0f, 40.0f, self.view.frame.size.width, self.view.frame.size.height - 40.0f)];
    [self.view.layer addSublayer:playerLayer];
    [player seekToTime:kCMTimeZero];
    [player play];
}

@end
Run Code Online (Sandbox Code Playgroud)

结果,通过按下AVRoutePickerView,您将获得如下内容: 在此处输入图片说明

通过按可用的外部屏幕,您将可以在其上播放内容。

  • 我使用AVRoutePickerView构建了一个小示例,它似乎与MPVolumeView等效,它似乎将现有的AV会话路由到另一台设备,但是它似乎并未开始对非媒体内容进行镜像。 (2认同)
  • 我可以使用AVRoutePickerView以编程方式触发对路线的选择吗? (2认同)
  • 这个答案没有解决所提出的问题:OP 希望以编程方式启动 Airplay,这意味着用户不必点击屏幕上的任何内容即可启动 Airplay。 (2认同)