Использовать iPhone в качестве игрового контроллера в приложении tvOS?
Во время анонса Apple TV разработчики Crossy Road продемонстрировали использование iPhone в качестве второго контроллера для игры в Apple TV:
http://www.macrumors.com/2015/09/09/cooperative-play-for-crossy-road/
Моя первая мысль заключалась в том, чтобы реализовать это, используя Multiper Connectivity Framework. Однако он не поддерживается на tvOS. Есть ли хороший способ подключения iPhone к Apple TV без подключения к Multipeer?
Обновление: Не похоже, что я могу использовать GameKit, потому что GKPeerPickerController был удален из GameKit на tvOS.
Ответы
Ответ 1
Вы можете попробовать мою библиотеку. Я построил это для своих приложений, может быть, и полезно для вас.
https://github.com/vivianaranha/TvOS_Remote
Проект Apple TV (приемник)
Шаг 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 выберите и установите делегат для remoteReceiver
self.remoteReceiver = [[RemoteReceiver alloc] init];
self.remoteReceiver.delegate = self;
Шаг 5: Внесите следующий метод делегата для отправки сообщений из удаленного приложения iOS
-(void) didReceiveMessage:(NSDictionary *)userInfo{
NSLog(@"%@",userInfo);
}
Проект iOS (отправитель/пульт дистанционного управления)
Шаг 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];
}
Ответ 2
Я разработал фреймворк, который поддерживает создание программных контроллеров и направляет входные данные через профиль MFi, позволяя вам иметь единую кодовую базу, которая обрабатывает как программные, так и аппаратные контроллеры. Многие другие функции:
https://github.com/robreuss/VirtualGameController
NSNetservice используется для подключения, поддерживаются все платформы Apple (iOS, OS X, watchOS и tvOS).
Все функции:
- Интерфейс Mimics для платформы Apple GameController (GCController)
- Поддержка движения устройств в программных контроллерах
- Пользовательские элементы контроллера
- Отображение пользовательских элементов
- Wi-Fi, с откатом Bluetooth.
- Контроллер-экспедиторская
- Работает с Apple TV Simulator
- Неограниченное количество аппаратных контроллеров на Apple TV (с использованием перенаправления контроллера)
- Возможность улучшать недорогие контроллеры с плавным включением/форматированием с движением, расширенными элементами профиля и настраиваемыми элементами.
- Поддержка контроллера iCade (отображается через профили MFi, чтобы они отображались как аппаратные средства MFi).
- Простая в использовании 3d touch на программных контроллерах.
- Использование экранных и Bluetooth-клавиатур с использованием программных контроллеров (в том числе с Apple TV).
- Поддержка моментальных снимков (совместимая с форматом моментальных снимков Apple)
- Swift 2.1
- Framework на основе
Ответ 3
Похоже, что CFNetwork
доступен на TvOS. Попробуйте этот вопрос за помощью по использованию CFNetwork
.
EDIT: посмотрите также CoreBluetooth
. Я работаю над одной и той же проблемой - я хочу иметь приложение для iPhone со спутника для моего приложения TvOS.
Ответ 4
Ну, я не уверен, что он квалифицируется как "хороший способ", но GKMatchRequest
и GKMatchmaker
находятся там, поэтому, возможно, это то, что они используют.
https://developer.apple.com/library/prerelease/tvos/documentation/GameKit/Reference/GKMatchRequest_Ref/