データの送信
接続したBluetoothデバイスにデータを送信するには、GKSessionオブジェクトのsendDataToAllPeers:メソッドを使用します。送信するデータはNSDataオブジェクト経由で転送されます。そのため、各種データ(例えば画像などのバイナリデータ)を送信するためのアプリケーションプロトコルを自由に定義できます。mySendDataToPeers:メソッドを次のように定義します。
- (void) mySendDataToPeers:(NSData *) data
{
if (currentSession)
[self.currentSession sendDataToAllPeers:data
withDataMode:GKSendDataReliable
error:nil];
}
btnSend:メソッドを次のように定義し、ユーザーが入力したテキストをリモートデバイスに送信できるようにします。
-(IBAction) btnSend:(id) sender
{
//---convert an NSString object to NSData---
NSData* data;
NSString *str = [NSString stringWithString:txtMessage.text];
data = [str dataUsingEncoding: NSASCIIStringEncoding];
[self mySendDataToPeers:data];
}
データの受信
相手デバイスからデータを受信すると、receiveData:fromPeer:inSession:context:メソッドが呼び出されます。このメソッドを次のように実装します。
- (void) receiveData:(NSData *)data
fromPeer:(NSString *)peer
inSession:(GKSession *)session
context:(void *)context {
//---convert the NSData to NSString---
NSString* str;
str = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Data received"
message:str
delegate:self
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
[alert release];
}
受信したデータはNSData形式になっています。これをUIAlertViewクラスを使って表示するには、NSStringオブジェクトに変換する必要があります。
アプリケーションのテスト
これで完成です。アプリケーションをテストしてみましょう。Xcode内でCommand+Rキーを押し、アプリケーションを2台のiPhoneまたはiPod Touchにデプロイします。この記事の解説は、2台のデバイスがあることを前提としています(iPhoneとiPod Touchのどちらでもかまいません)。このアプリケーションを実行するには、両方のデバイスが最低でもiPhone OS 3.0を搭載している必要があります。
2台のデバイスにアプリケーションをデプロイしたら、両方のデバイスでアプリケーションを起動します。各デバイスのConnectボタンをタップします。GKPeerPickerControllerにより、他のデバイスを検索するための標準UIが表示されます(図4を参照)。
しばらくすると、両方のアプリケーションがお互いを見つけます(図5を参照)。見つかったデバイスの名前をタップすると、アプリケーションがそのデバイスに接続しようとします。
このアプリケーションをiPhone Simulatorでテストした場合、2台のデバイスを検出するところまではできますが、それ以上の動作は確認できません。検出したデバイスに接続することはできません。
一方のデバイスに他方のデバイスが接続しようとすると、図6のようなポップアップが表示されます。接続を許可する場合はAcceptボタン、接続を拒否する場合はDeclineボタンをタップします。
接続が確立すると、テキストを入力して、相手デバイスに送信できる状態になります。相手デバイスから受信したデータはアラートビューに表示されます(図7を参照)。
まとめ
この記事では、Bluetoothを使用すると2台のiPhoneまたはiPod Touchを簡単に接続できることを紹介しました。この考え方を応用すれば、ネットワークゲームや面白いアプリケーションを簡単に作成できます。次回の記事では、このBluetooth接続を利用して音声データを送信する方法を紹介します。では、またお会いしましょう!




