Я играю с AirPlay, используя iPhone 4S, и у меня возникли некоторые проблемы. Я обновил свой Apple TV 2 до последней версии (4.4.3, я думаю? Я забыл, он в другой комнате, и мне лень проверять), и у меня iOS 4 на 4S, когда я использую Xcode 4.2 Build 4D199 , Я написал простое приложение UIView, которое пытается рисовать на втором экране, когда доступно. Вот что у меня есть в viewDidLoad:
- (void)viewDidLoad
{
[super viewDidLoad];
[self.view addSubview:[[MPVolumeView alloc] initWithFrame:CGRectMake(0, 0, 320, 50)]];
NSLog(@"Registering for screen connect events...");
// Do any additional setup after loading the view, typically from a nib.
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(screenDidConnect:)
name:UIScreenDidConnectNotification
object:nil];
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(screenDidDisconnect:)
name:UIScreenDidDisconnectNotification
object:nil]; NSLog(@"There are %i connected screens.", ScreenCount);
if (ScreenCount > 1) {
self.secondWindow = [self myScreenInit:[[UIScreen screens] objectAtIndex:1]];
[self.secondWindow addSubview:[self createFullscreenViewForText:@"Second window" withSize:CGSizeMake(640, 480)]];
}
}
Этот код работает в симуляторе, когда я включаю TV Out, хотя он всегда падает, если я включаю TV Out во время отладки. Я должен перезапустить приложение после включения ТВ в аппаратном меню в симуляторе. При повторном запуске я вижу второй экран UILabel на втором экране. На iPhone 4S я могу сделать это только в том случае, если я включу AirPlay с помощью элемента управления AirPlay на панели запущенных задач до самого левого угла. Вы заметите, что я добавил компонент MPVolumeView в представление при запуске, которое я пытаюсь использовать для подключения к своему Apple TV, но безрезультатно.
Если я использую встроенное приложение MPVolumeView, я могу успешно отключиться от Apple TV, но при повторном его использовании и выборе яблочного телевизора для повторного подключения я не получаю UIScreenDidConnectNotification. Опять же, единственный раз, когда я вижу второй экран, это когда я включаю зеркалирование. Если я подключаюсь с помощью любого элемента управления AirPlay, я считаю только 1 экран и никогда не получаю уведомление. Кроме того, каждый раз, когда я включаю зеркалирование, я вижу это в журналах консоли:
Could not find mapped image ColorOnGrayShadow_AirPlay.png
Это, кажется, сломано, и я хотел бы знать, что другие испытали в этой области. Я продолжу играть и обновлять этот пост, когда узнаю что-то новое.