Je joue avec AirPlay en utilisant un iPhone 4S et j'ai des problèmes. J'ai mis à jour mon Apple TV 2 au plus tard (4.4.3 je pense? Je l'oublie, c'est dans l'autre pièce et je suis trop fainéant pour vérifier) et j'ai iOS 5.0 sur mon 4S pendant que j'utilise Xcode 4.2 Build 4D199 . J'ai écrit une application UIView simple qui tente de dessiner sur un deuxième écran lorsque disponible. Voici ce que j'ai dans mon viewDidLoad:Comment utiliser iOS 5+ AirPlay pour un deuxième écran
- (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)]];
}
}
Ce code fonctionne dans le simulateur quand j'activer la sortie TV mais il se bloque toujours si j'activer la sortie TV tout en debug. Je dois relancer l'application après avoir activé la sortie TV dans le menu du matériel dans le simulateur. Lors de la relance, je vois le deuxième écran UILabel sur le deuxième écran. Sur l'iPhone 4S, je peux seulement faire ce travail si j'active AirPlay en utilisant le contrôle AirPlay dans la barre des tâches en cours d'exécution tout à fait à gauche. Vous remarquerez que j'ai ajouté un composant MPVolumeView à la vue au lancement que je tente d'utiliser pour me connecter à mon Apple TV en vain. Si j'utilise l'application MPVolumeView dans l'application, je peux me déconnecter de l'Apple TV mais quand je l'utilise à nouveau et que je sélectionne l'Apple TV pour me reconnecter, je ne reçois pas la notification UIScreenDidConnectNotification. Encore une fois le seul moment où je peux voir le 2ème écran est quand j'active le mirroring. Si je me connecte avec l'un ou l'autre des contrôles AirPlay, je ne compte que 1 écran et je n'obtiens jamais la notification. De plus, chaque fois que je permets que je vois cela dans la mise en miroir des journaux de la console:
Could not find mapped image ColorOnGrayShadow_AirPlay.png
Cela semble être rompu et je voudrais savoir ce que les autres l'expérience a été dans ce domaine. Je vais continuer à jouer et mettre à jour ce post que j'apprends de nouvelles choses.
Je vais avoir exactement le même problème avec le MPVolumeView ne donnant pas un autre écran. J'avais un problème pour obtenir du contenu sur le deuxième écran, mais il s'est avéré que c'était parce que je ne conservais pas l'objet fenêtre. Encore, serait gentil de ne pas avoir à utiliser le mirroring pour que cela fonctionne. – Jeff
Hey Cliff - une idée de comment contrôler un écran d'un autre? Je n'arrive pas à comprendre comment faire cela. Merci! – TommyG
Si vous voulez dire contrôler un deuxième écran via AirPlay, alors il s'agit d'utiliser les API d'AirPlay pour accéder au 2ème écran. Si vous avez une référence, vous pouvez dessiner ou placer tout ce que vous voulez. – Cliff