During the Apple TV announcement, the developers of Crossy Road demonstrated using an iPhone as a 2nd controller for an Apple tv game:
http://www.macrumors.com/2015/
Well, I'm not sure it qualifies as a "good way", but GKMatchRequest
and GKMatchmaker
are in there, so maybe that's what they're using.
https://developer.apple.com/library/prerelease/tvos/documentation/GameKit/Reference/GKMatchRequest_Ref/
I've developed a framework that supports the creation of software-based controllers and directs the input through a MFi profile, allowing you to have a single codebase that handles both software and hardware controllers. Many other features as well:
https://github.com/robreuss/VirtualGameController
NSNetservice is used for connectivity, and all Apple platforms are supported (iOS, OS X, watchOS and tvOS).
All features:
You can try my library. I built this for my apps maybe helpful for you too.
https://github.com/vivianaranha/TvOS_Remote
Apple TV Project (Receiver)
Step 1: Create a TvOS Project and import the files from RemoteReceiver
libRemoteReceiver.a
RemoteReceiver.h
Step 2: In your ViewController.m file import the RemoteReceiver.h file
#import "RemoteReceiver.h"
Step 3: Inside ViewController.m file add the following code
@interface ViewController () <RemoteReceiverDelegate>
@property (nonatomic, strong) RemoteReceiver *remoteReceiver;
@end
Step 4: Inside viewDidLoad alloc and set the delegate for remoteReceiver
self.remoteReceiver = [[RemoteReceiver alloc] init];
self.remoteReceiver.delegate = self;
Step 5: Implement the following delegate method for messages send from iOS remote app
-(void) didReceiveMessage:(NSDictionary *)userInfo{
NSLog(@"%@",userInfo);
}
iOS Project (Sender/Remote Control)
Step 1: Create an iOS Project and import the files from RemoteSender
libRemoteSender.a
RemoteSender.h
Step 2: Import the RemoteSender class in your ViewController
#import "RemoteSender.h"
Step 3: Update ViewController.m with the following code
@interface ViewController ()
@property(nonatomic, strong) RemoteSender *remoteSender;
@end
Step 4: Allocate and initialize the remoteSender object
self.remoteSender = [[RemoteSender alloc] init];
Step 5: Implement gestures and methods (Check below for just button code)
- (IBAction)sendSomeInformation:(id)sender {
NSDictionary *theDictionaryToSendToTV = @{@"name": @"John Smith",@"age": @"35", @"address":@"123 Main St"};
[self.remoteSender sendInfo:theDictionaryToSendToTV];
}
It looks like CFNetwork
is available on TvOS. Try this question for help on using CFNetwork
.
EDIT: also take a look at CoreBluetooth
. I'm working on the same issue - I want to have a companion iPhone app for my TvOS app.