More Related Content
Similar to どこでもサクッと通信対戦 (20)
どこでもサクッと通信対戦
- 7. フレームワークのインポート
// フレームワークをインポート
#import <MultipeerConnectivity/MultipeerConnectivity.h>
!
!
// デリゲートを設定
@interface ViewController ()<MCBrowserViewControllerDelegate,
MCSessionDelegate>
- 8. 宣言
@property (nonatomic, strong) MCPeerID *myPeerID;
@property (nonatomic, strong) MCSession *mySession;
@property (nonatomic, strong) MCBrowserViewController *browserVC;
@property (nonatomic, strong) MCAdvertiserAssistant *advertiser;
- 9. - (void) setUpMultipeer{
!
// Peerという端末のIDを設定
self.myPeerID = [[MCPeerID alloc]initWithDisplayName:[UIDevice
currentDevice].name];
// Sessionという送受信を行うための仕組みを確立
self.mySession = [[MCSession alloc]initWithPeer:self.myPeerID];
self.mySession.delegate = self;
// MCBrowserViewControllerという接続を自動的にしてくれるクラスを設定
self.browserVC = [[MCBrowserViewController alloc]
initWithServiceType:@"chat" session:self.mySession];
self.browserVC.delegate = self;
// 自分の端末を他の端末に見つけてもらえるようにする
self.advertiser = [[MCAdvertiserAssistant alloc]
initWithServiceType:@"chat" discoveryInfo:nil
session:self.mySession];
[self.advertiser start];
}
セットアップ
- 10. MCBrowserViewController
- (void) showBrowserVC{
!
// MCBrowserViewControllerを表示
[self presentViewController:self.browserVC animated:YES
completion:nil];
!
}
- 12. - (void) sendText{
// 入力したメッセージを代入
NSString *message = self.textField.text;
self.textField.text = @"";
// メッセージをNSData型に変換
NSData *data = [message dataUsingEncoding:NSUTF8StringEncoding];
// メッセージを送信
NSError *error;
[self.mySession sendData:data toPeers:[self.mySession
connectedPeers] withMode:MCSessionSendDataUnreliable
error:&error];
// receiveMessage:メソッドを呼び出す
[self receiveMessage: message fromPeer: self.myPeerID];
!
}
メッセージを送信
- 13. メッセージを受信
- (void)session:(MCSession *)session didReceiveData:(NSData *)data
fromPeer:(MCPeerID *)peerID{
// NSDataをNSStringに変換
NSString *message = [[NSString alloc] initWithData:data
encoding:NSUTF8StringEncoding];
// receiveMessage:メソッドを実行
dispatch_async(dispatch_get_main_queue(), ^{
!
[self receiveMessage:message fromPeer:peerID];
!
});
!
}
- 14. メッセージを表示
- (void) receiveMessage: (NSString *) message fromPeer:
(MCPeerID *) peer{
NSString *finalText;
if (peer == self.myPeerID) // 自分のメッセージを受け取ったとき
{
finalText = [NSString stringWithFormat:@"nMe: %@ n",
message];
}
!
else // 相手のメッセージを受け取ったとき
{
finalText = [NSString stringWithFormat:@"n%@: %@ n",
peer.displayName, message];
}
// メッセージを表示
self.textView.text = [self.textView.text
stringByAppendingString:finalText];
}