Tôi đang cố gắng bật hỗ trợ AirPlay trong ứng dụng của mình. Tôi không làm video; Tôi muốn sử dụng màn hình ngoài như một "màn hình thứ hai".iOS AirPlay: ứng dụng của tôi chỉ được thông báo về màn hình ngoài khi phản chiếu được BẬT?
Đây là vấn đề của tôi: nếu tôi chọn "AppleTV" từ nút AirPlay, ứng dụng của tôi sẽ không được thông báo. Thời gian duy nhất mà ứng dụng của tôi nhận được thông báo là khi tôi rời khỏi ứng dụng của mình, đi tới nút AirPlay ở cấp hệ điều hành, chọn "AppleTV" ở đó và bật Bắt chước. Nếu tôi tắt phản chiếu, ứng dụng của tôi sau đó sẽ được thông báo rằng màn hình ngoài đã biến mất.
Vì vậy:
- Tại sao không ứng dụng của tôi nhận được thông báo khi tôi chọn một màn hình ngoài từ trong ứng dụng của tôi không?
- Tại sao ứng dụng của tôi được thông báo về sự hiện diện của màn hình ngoài khi tôi bật tính năng phản chiếu ... và không phải trước đó? Tôi rõ ràng là hiểu nhầm điều gì đó, nhưng nó có vẻ như quay phản chiếu nên thông báo cho ứng dụng của tôi rằng màn hình bên ngoài đã biến mất (thay vì bây giờ có sẵn, vì hệ điều hành nên sử dụng màn hình ngoài đó để phản chiếu.)
Mẫu mã bên dưới. Cảm ơn trước sự giúp đỡ nào!
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
// Is there already an external screen?
if (UIScreen.screens.count > 1)]
{
[self prepareExternalScreen:UIScreen.screens.lastObject];
}
// Tell us when an external screen is added or removed.
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(externalScreenDidConnect:) name:UIScreenDidConnectNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(externalScreenDidDisconnect:) name:UIScreenDidDisconnectNotification object:nil];
self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
self.window.rootViewController = self.viewController;
// Add AirPlay control to view controller.
MPVolumeView* airplayButtonView = [[MPVolumeView alloc] init];
airplayButtonView.frame = CGRectMake(300, 300, 50, 50);
airplayButtonView.backgroundColor = [UIColor blackColor];
airplayButtonView.showsVolumeSlider = NO;
airplayButtonView.showsRouteButton = YES;
[self.viewController.view addSubview:airplayButtonView];
[self.window makeKeyAndVisible];
return YES;
}
#pragma mark - External screen handling
- (void)externalScreenDidConnect:(NSNotification*)notification
{
[self prepareExternalScreen:notification.object];
}
- (void)externalScreenDidDisconnect:(NSNotification*)notification
{
// Don't need these anymore.
self.externalWindow = nil;
}
- (void)prepareExternalScreen:(UIScreen*)externalScreen
{
NSLog(@"PREPPING EXTERNAL SCREEN.");
self.viewController.view.backgroundColor = [UIColor blueColor];
CGRect frame = externalScreen.bounds;
self.externalWindow = [[UIWindow alloc] initWithFrame:frame];
self.externalWindow.screen = externalScreen;
self.externalWindow.hidden = NO;
self.externalWindow.backgroundColor = [UIColor redColor];
}
Cảm ơn. Và yuck: có vẻ như Apple đã làm một công việc khủng khiếp với giao diện người dùng về điều này. –
Đây có phải là trường hợp không? Tôi thấy rằng bài đăng này khá cũ và tôi đang tìm kiếm một cách. – VaporwareWolf