2012-04-11 18 views
6

iOSアプリケーションが現在使用しているAirplayデバイスのIPアドレスを取得できるかどうかは疑問です。アクティブなAirPlayデバイスのIPアドレスを見つける方法は?

いずれか、またはネットワーク上のすべてのairplay対応デバイスのIPアドレス。

ありがとうございます!

EDIT:私は今、受け入れられた答えを持っていますが、私は現在再生中のairplayデバイスのIPを取得する方法を知りたいと考えています。

答えて

7

NSNetServiceBrowserを使用する必要があるのは、プロトコルを使用してデバイスを検索することです。その後http://developer.apple.com/library/mac/#qa/qa1312/_index.html

:あなたは、あなたが検索したいプロトコルのため@"_pdl-datastream._tcp"を変更する必要が

_netServiceBrowser= [[NSNetServiceBrowser alloc] init]; 
    _netServiceBrowser.delegate= self; 
    [_netServiceBrowser searchForServicesOfType:@"_pdl-datastream._tcp" inDomain:@"local."]; 

、あなたはここでプロトコルのリストを見つけることができます:私は、プリンタと同じでしたが、私のコードは次のようになります

#pragma mark - NSNetServiceBrowserDelegate 

-(void)netServiceBrowserWillSearch:(NSNetServiceBrowser *)aNetServiceBrowser{ 
    //prepare the start of the search 
} 

-(void)netServiceBrowser:(NSNetServiceBrowser *)aNetServiceBrowser didFindService:(NSNetService *)aNetService moreComing:(BOOL)moreComing{ 
//Find a service, remember that after that you have to resolve the service to know the address 

[_printers addObject:aNetService]; 
aNetService.delegate=self; 
[aNetService resolveWithTimeout:5.0]; 

//More coming says if it has find more services, in case of more service are in queue wait to reload your interface 
if (!moreComing) { 
    [self.tableView reloadData]; 
} 
} 

-(void)netServiceBrowser:(NSNetServiceBrowser *)aNetServiceBrowser didNotSearch:(NSDictionary *)errorDict{ 
//Do what you want in case of error 
} 

-(void)netServiceBrowserDidStopSearch:(NSNetServiceBrowser *)aNetServiceBrowser{ 

//End search! 
} 

- (NSString *)getStringFromAddressData:(NSData *)dataIn { 
//Function to parse address from NSData 
struct sockaddr_in *socketAddress = nil; 
NSString   *ipString = nil; 

socketAddress = (struct sockaddr_in *)[dataIn bytes]; 
ipString = [NSString stringWithFormat: @"%s", 
      inet_ntoa(socketAddress->sin_addr)]; ///problem here 
return ipString; 
} 

- (void)netServiceDidResolveAddress:(NSNetService *)sender 
{ 
//delegate of NSNetService resolution process 
[_addresses addObject:[self getStringFromAddressData:[sender.addresses objectAtIndex:0]]]; 
[self.tableView reloadData]; 
} 

ウェブ役立つことができます:: http://www.macresearch.org/cocoa-scientists-part-xxviii-bonjour-and-how-do-you-do

あなたはプロトコルの機能を記述する必要があり3210

私はあなたに役立つことを願っています

+0

ありがとうございました!私はできるだけ早くそれを試してみます。 – Nailer

+2

"_airplay._tcp"はこの使用に適したプロトコルです。私はまだそれを実際に試してはいませんが、それがうまくいくとわかったらアップデートを投稿します。 – Nailer

+0

あなたは何か問題があると私たちは何が問題なのかを知っていれば、それは非常に簡単です。 – Jpellat

関連する問題