ios - desactivar - ¿Usar el iPhone como un controlador de juego en una aplicación de tvOS?
personalizar centro de control ios 10 (4)
Bueno, no estoy seguro de que califique como una "buena manera", pero GKMatchRequest
y GKMatchmaker
están ahí, así que tal vez eso es lo que están usando.
Durante el anuncio de Apple TV, los desarrolladores de Crossy Road demostraron usar un iPhone como segundo controlador para un juego de Apple TV:
http://www.macrumors.com/2015/09/09/cooperative-play-for-crossy-road/
Mi primer pensamiento fue implementar esto utilizando el marco de conectividad de Multipeer . Sin embargo, no es compatible con tvOS. ¿Hay una buena manera de conectar un iPhone a un Apple TV sin conectividad de Multipeer?
Actualización: no parece que pueda usar GameKit porque GKPeerPickerController se ha eliminado de GameKit en tvOS.
He desarrollado un marco que admite la creación de controladores basados en software y dirige la entrada a través de un perfil MFi, lo que le permite tener una base de código única que maneja los controladores de software y hardware. Muchas otras características también:
https://github.com/robreuss/VirtualGameController
NSNetservice se utiliza para la conectividad, y todas las plataformas de Apple son compatibles (iOS, OS X, watchOS y tvOS).
Todas las características:
- API de Mimics para el framework GameController de Apple (GCController)
- Dispositivo de soporte de movimiento en controladores de software.
- Elementos de controlador personalizados
- Mapeo de elementos personalizados
- Basado en WiFi, con respaldo Bluetooth
- Reenvío del controlador
- Funciona con Apple TV Simulator
- Número ilimitado de controladores de hardware en Apple TV (mediante reenvío de controladores)
- Capacidad para mejorar los controladores de deslizamiento / ajuste de forma económicos con movimiento, elementos de perfil extendido y elementos personalizados
- Compatibilidad con el controlador iCade (asignada a través de los perfiles MFi para que aparezcan como hardware MFi)
- Toque 3D fácil de implementar en los controladores de software
- Aproveche los teclados en pantalla y Bluetooth utilizando controladores de software (incluso con Apple TV)
- Compatibilidad con instantáneas (compatible con el formato de instantáneas de Apple)
- Swift 2.1
- Basado en el marco
Parece que CFNetwork
está disponible en TvOS. Pruebe esta pregunta para obtener ayuda sobre CFNetwork
usar CFNetwork
.
EDITAR: también echar un vistazo a CoreBluetooth
. Estoy trabajando en el mismo problema: quiero tener una aplicación de iPhone complementaria para mi aplicación TvOS.
Puedes probar mi biblioteca. Construí esto para mis aplicaciones, tal vez útil para ti también.
https://github.com/vivianaranha/TvOS_Remote
Proyecto Apple TV (Receptor)
Paso 1: Cree un proyecto TvOS e importe los archivos desde RemoteReceiver
libRemoteReceiver.a
RemoteReceiver.h
Paso 2: en el archivo ViewController.m, importe el archivo RemoteReceiver.h
#import "RemoteReceiver.h"
Paso 3: dentro del archivo ViewController.m agregue el siguiente código
@interface ViewController () <RemoteReceiverDelegate>
@property (nonatomic, strong) RemoteReceiver *remoteReceiver;
@end
Paso 4: Dentro de viewDidLoad alloc y establezca el delegado para remoteReceiver
self.remoteReceiver = [[RemoteReceiver alloc] init];
self.remoteReceiver.delegate = self;
Paso 5: Implemente el siguiente método de delegado para enviar mensajes desde la aplicación remota de iOS
-(void) didReceiveMessage:(NSDictionary *)userInfo{
NSLog(@"%@",userInfo);
}
Proyecto iOS (Remitente / Control Remoto)
Paso 1: crear un proyecto iOS e importar los archivos desde RemoteSender
libRemoteSender.a
RemoteSender.h
Paso 2: Importe la clase RemoteSender en su ViewController
#import "RemoteSender.h"
Paso 3: Actualice ViewController.m con el siguiente código
@interface ViewController ()
@property(nonatomic, strong) RemoteSender *remoteSender;
@end
Paso 4: Asigne e inicialice el objeto remoteSender
self.remoteSender = [[RemoteSender alloc] init];
Paso 5: Implemente gestos y métodos (marque abajo para ver solo el código del botón)
- (IBAction)sendSomeInformation:(id)sender {
NSDictionary *theDictionaryToSendToTV = @{@"name": @"John Smith",@"age": @"35", @"address":@"123 Main St"};
[self.remoteSender sendInfo:theDictionaryToSendToTV];
}