在tvOS应用程序中使用iPhone作为游戏控制器?

时间:2015-09-11 01:02:21

标签: ios objective-c multipeer-connectivity apple-tv tvos

在Apple TV发布公告期间,Crossy Road的开发人员使用iPhone作为Apple电视游戏的第二控制器:

http://www.macrumors.com/2015/09/09/cooperative-play-for-crossy-road/

我的第一个想法是使用Multipeer Connectivity Framework来实现这一点。但是,它不支持tvOS。有没有一种很好的方法可以在没有Multipeer Connectivity的情况下将iPhone连接到Apple TV?

更新:我似乎无法使用GameKit,因为已经从tvOS上的GameKit中删除了GKPeerPickerController。

4 个答案:

答案 0 :(得分:10)

你可以试试我的图书馆。我为我的应用程序构建这个也许对你有用。

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内部为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:在ViewController中导入RemoteSender类

#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];
}

答案 1 :(得分:7)

我开发了一个框架,支持创建基于软件的控制器,并通过MFi配置文件引导输入,允许您拥有一个处理软件和硬件控制器的单一代码库。许多其他功能:

https://github.com/robreuss/VirtualGameController

NSNetservice用于连接,支持所有Apple平台(iOS,OS X,watchOS和tvOS)。

所有功能:

  • 模仿Apple的 GameController 框架(GCController)的API
  • 软件控制器中的设备运动支持
  • 自定义控制器元素
  • 自定义元素映射
  • 基于WiFi,具有蓝牙回退功能
  • 控制器的转发
  • 适用于Apple TV Simulator
  • Apple TV上的无限数量的硬件控制器(使用控制器转发)
  • 能够通过运动,扩展轮廓元素和自定义元素增强廉价的滑动/形状配合控制器
  • iCade控制器支持(通过MFi配置文件映射,因此它们显示为MFi硬件)
  • 易于在软件控制器上实现3D触控
  • 使用软件控制器(包括Apple TV)利用屏幕和蓝牙键盘
  • 支持快照(与Apple的快照格式兼容)
  • Swift 2.1
  • 框架基

答案 2 :(得分:3)

在TvOS上可以看到CFNetwork。请尝试this question获取有关使用CFNetwork的帮助。

编辑:还要看看CoreBluetooth。我正在研究同样的问题 - 我想为我的TvOS应用程序配备一个配套的iPhone应用程序。

答案 3 :(得分:0)

嗯,我不确定它是否属于“好方法”,但GKMatchRequestGKMatchmaker就在那里,所以也许这就是他们正在使用的内容。

https://developer.apple.com/library/prerelease/tvos/documentation/GameKit/Reference/GKMatchRequest_Ref/