Использовать iPhone в качестве игрового контроллера в приложении tvOS?
Во время анонса Apple TV разработчики Crossy Road продемонстрировали использование iPhone в качестве второго контроллера для телевизионной игры Apple:
http://www.macrumors.com/2015/09/09/cooperative-play-for-crossy-road/
Моей первой мыслью было реализовать это с помощью Multipeer Connectivity Framework. Тем не менее, он не поддерживается в tvOS. Есть ли хороший способ подключить iPhone к Apple TV без возможности подключения Multipeer?
Обновление: не похоже, что я могу использовать GameKit, потому что GKPeerPickerController был удален из GameKit на tvOS.
4 ответа
Вы можете попробовать мою библиотеку. Я построил это для своих приложений, может быть, полезно и для вас.
https://github.com/vivianaranha/TvOS_Remote
Apple TV Project (Приемник)
Шаг 1. Создайте проект TvOS и импортируйте файлы из RemoteReceiver
libRemoteReceiver.a
RemoteReceiver.h
Шаг 2. В файле ViewController.m импортируйте файл RemoteReceiver.h
#import "RemoteReceiver.h"
Шаг 3: Внутри файла ViewController.m добавьте следующий код
@interface ViewController () <RemoteReceiverDelegate>
@property (nonatomic, strong) RemoteReceiver *remoteReceiver;
@end
Шаг 4: Внутри viewDidLoad alloc и установка делегата для remoteReceiver
self.remoteReceiver = [[RemoteReceiver alloc] init];
self.remoteReceiver.delegate = self;
Шаг 5: Реализуйте следующий метод делегата для сообщений, отправляемых из удаленного приложения iOS
-(void) didReceiveMessage:(NSDictionary *)userInfo{
NSLog(@"%@",userInfo);
}
iOS Project (Отправитель / Удаленное управление)
Шаг 1. Создайте проект iOS и импортируйте файлы из RemoteSender
libRemoteSender.a
RemoteSender.h
Шаг 2. Импортируйте класс RemoteSender в свой ViewController
#import "RemoteSender.h"
Шаг 3: Обновите ViewController.m с помощью следующего кода
@interface ViewController ()
@property(nonatomic, strong) RemoteSender *remoteSender;
@end
Шаг 4. Выделите и инициализируйте объект remoteSender.
self.remoteSender = [[RemoteSender alloc] init];
Шаг 5: Реализуйте жесты и методы (проверьте только код кнопки)
- (IBAction)sendSomeInformation:(id)sender {
NSDictionary *theDictionaryToSendToTV = @{@"name": @"John Smith",@"age": @"35", @"address":@"123 Main St"};
[self.remoteSender sendInfo:theDictionaryToSendToTV];
}
Я разработал платформу, которая поддерживает создание программных контроллеров и направляет ввод через профиль MFi, позволяя вам иметь единую кодовую базу, которая обрабатывает как программные, так и аппаратные контроллеры. Многие другие функции:
https://github.com/robreuss/VirtualGameController
NSNetservice используется для подключения, и поддерживаются все платформы Apple (iOS, OS X, watchOS и tvOS).
Все функции:
- API Mimics для платформы Apple GameController (GCController)
- Поддержка движения устройства в программных контроллерах
- Пользовательские элементы контроллера
- Пользовательское сопоставление элементов
- На основе Wi-Fi, с поддержкой Bluetooth
- Контроллер-экспедиторская
- Работает с Apple TV Simulator
- Неограниченное количество аппаратных контроллеров на Apple TV (с использованием переадресации контроллеров)
- Возможность усовершенствовать недорогие скользящие / облегающие контроллеры с движением, расширенными элементами профиля и пользовательскими элементами
- Поддержка контроллера iCade (отображается через профили MFi, поэтому они отображаются как оборудование MFi)
- Легко внедряемое касание 3d на программных контроллерах
- Использование экранных и Bluetooth-клавиатур с помощью программных контроллеров (в том числе с Apple TV)
- Поддержка снимков (совместимых с форматом снимков Apple)
- Swift 2.1
- Framework на основе
Это выглядит как CFNetwork
доступно на TvOS. Попробуйте этот вопрос для помощи по использованию CFNetwork
,
РЕДАКТИРОВАТЬ: также взглянуть на CoreBluetooth
, Я работаю над той же проблемой - я хочу иметь приложение для iPhone для моего приложения TvOS.
Ну, я не уверен, что это считается "хорошим способом", но GKMatchRequest
а также GKMatchmaker
там, так что, возможно, это то, что они используют.