原文:http://livevision.us/wordpress/2011/02/16/airplay-without-private-api/
如果不是 Erica Sadun 的努力以及 AirPlayer、AirFlick、AirPDF以及 AirSay 这样类似的工具的出现,我可能不会兴起尝试一把的念头。在这篇文章中,我将演示创建一个 iOS app( camThis)将图片发送到Apple TV,既不需要使用任何私有 API,也不需要越狱。我没有提交到苹果商店,但如果有任何新的消息我将随时奉上。
更新:camThis 目前已被苹果接受。
所需工具:
译者注:这个链接中 AirPlayer的下载链接已经被删除,读者可以在此处下载: http://download.cnet.com/AirPlayer/3001-13632_4-75330532.html?spi=cc4808989275f217e583547fa2bef669
运行 AirPlayer:
译者注:AirPlayer 已经不可用,请用其他类似软件代替。
运行 Bonjour Browser: (download)
一旦获得 IP 地址,请将地址+端口记下来(在下图中,我用Mac 模拟出的AppleTV的IP地址和端口是 192.168.1.102:7000)。
BonjourBrowser
用Packet Peeper嗅探iOS Airplay 设备发出的网络包:
选择一张AirPlayer的图片:
按下 airplay 按钮。可以观察到Packet Peeper中的监控到大量网络包。
PacketPeeper results
示例代码:
- (void) sendUIImage {
UIImage *img = [UIImageimageNamed:@"test.png"];
NSData *data = UIImageJPEGRepresentation(img,1.0);
NSMutableData *mdata = [[[NSMutableData alloc]initWithData:data] autorelease];
NSLog(@"PUT photo...");
NSURL *url = [NSURLURLWithString:@"http://192.168.2.32:7000/photo"];
request = [ASIHTTPRequest requestWithURL:url];
[request setRequestMethod:@"PUT"];
[requestaddRequestHeader:@"User-Agent" value:@"MediaControl/1.0"];
[request setPostBody:mdata];
[requestsetShouldAttemptPersistentConnection:YES];
[request startSynchronous];
NSError *error = [request error];
if (!error) {
NSLog(@"success");
} else {
NSLog(@"%@",[errorlocalizedDescription]);
}
}