【问题标题】:Use iPhone as a game controller in a tvOS app?将 iPhone 用作 tvOS 应用程序中的游戏控制器?
【发布时间】:2015-12-07 10:48:23
【问题描述】:

在 Apple TV 发布期间,Crossy Road 的开发者展示了使用 iPhone 作为 Apple tv 游戏的第二个控制器:

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

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

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

【问题讨论】:

    标签: ios objective-c multipeer-connectivity apple-tv 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 步:在 ViewController 中导入 RemoteSender 类

    #import "RemoteSender.h"
    

    第 3 步:使用以下代码更新 ViewController.m

    @interface ViewController ()
    @property(nonatomic, strong) RemoteSender *remoteSender;
    @end
    

    第四步:分配并初始化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];
    }
    

    【讨论】:

    • 这看起来很有趣。您是否有机会添加对发送和接收自定义事件的支持?就像说一个 userInfo NSDictionary 一样。
    • 我现在可以自定义添加任何内容。我会在几天内让它变得更有用。目前我正在开发自己的多人游戏应用程序
    • 这看起来很棒。如何确定连接到正确的 Apple TV?我没有看到 ID
    • 嗨!为什么没有arm64支持?
    • iPhone 从来没有为我连接到电视,因此在 sendInfo 上崩溃到发送者对象。我在 Github 上报告了一个问题。
    【解决方案2】:

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

    https://github.com/robreuss/VirtualGameController

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

    所有功能:

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

    【讨论】:

    • 这应该是理想世界中的接受答案!
    • 谢谢!我希望有些人觉得它有用。
    【解决方案3】:

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

    编辑:也看看CoreBluetooth。我正在解决同样的问题 - 我想为我的 TvOS 应用程序提供一个配套的 iPhone 应用程序。

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多