GameKitを使ったBluetoothプログラミング

8,153 views
7,992 views

Published on

Published in: Technology
0 Comments
9 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
8,153
On SlideShare
0
From Embeds
0
Number of Embeds
28
Actions
Shares
0
Downloads
29
Comments
0
Likes
9
Embeds 0
No embeds

No notes for slide

GameKitを使ったBluetoothプログラミング

  1. 1. GameKitを使った 楽しい Bluetoothプログラミング @taiko19xx on SWWDC 2012/7/2112年7月23日月曜日
  2. 2. 自己紹介 木村 俊彦(@taiko19xx) Webデザイン系学校の学生 就職先探してます☆ ぶろぐ http://tnfront.net/12年7月23日月曜日
  3. 3. 自己紹介 iPhone開発歴 2年ぐらい 自称ゆるゆる開発者 アプリ BTGPS GPS2Photo(New!)12年7月23日月曜日
  4. 4. 今日は入門編です12年7月23日月曜日
  5. 5. Bluetoothとは おなじみの近距離無線通信技術 iPhone・iPadは全世代、Touchは第二世代から 省電力 バージョンやプロファイルが様々 今回は気にしません12年7月23日月曜日
  6. 6. iOSのBluetooth通信 GameKitを使った通信 主に使われるフレームワーク 今のところこれしかない? CoreBluetooth(Bluetooth 4.0搭載機のみ)12年7月23日月曜日
  7. 7. GameKitとは “ゲーム向け”のフレームワーク GameCenter(iOS 4.1∼) Peer-to-Peer Connectivity(iPhoneOS 3.0∼) In-Game Voice(同上) 今回はPeer-to-Peer Connectivityのお話12年7月23日月曜日
  8. 8. Part1.検索と接続12年7月23日月曜日
  9. 9. 検索から接続確立まで GKPeerPickerControllerを使う 検索から接続までやってくれるので楽 一対一の接続に限る GKPeerPickerControllerを使わない 検索や接続を自前で実装する必要がある 一対多や”すれちがい通信”ができるようになる 今回はGKPeerPickerController使います12年7月23日月曜日
  10. 10. GKPeerPickerController UIImagePickerControllerとそっくりです12年7月23日月曜日
  11. 11. connectionTypesMask GKPeerPickerConnectionTypeNearby(Bluetooth)と GKPeerPickerConnectionTypeOnline(WiFi)がある TypeOnlineは接続処理を自前で実装する必要があ る TypeOnlineのみの指定はできず、TypeNearbyと セットです12年7月23日月曜日
  12. 12. show こんな画面が出てきて探索が始まります 見つかると一覧が表示されます12年7月23日月曜日
  13. 13. show 選択すると、選択された側で許可するかを聞かれ ます12年7月23日月曜日
  14. 14. 許可orキャンセル後 許可すると peerPickerController:didConnectPeer:toSession: キャンセルするとpeerPickerControllerDidCancel: それぞれGKPeerPickerControllerDelegateのメソッ ドが呼び出されます12年7月23日月曜日
  15. 15. GKPeerPickerController Delegate 実装12年7月23日月曜日
  16. 16. peerPickerController:didConnectPeer:t oSession: currentSession(GKSession)は接続中のセッション setDataReceiveHandler:withContextを書かないと 受信時に何も呼ばれません12年7月23日月曜日
  17. 17. peerPickerControllerDidCancel: 最低限、pickerを解放するだけ dismissは自動で実行されます12年7月23日月曜日
  18. 18. Part2.データ送受信12年7月23日月曜日
  19. 19. 送受信まで 送信 GKSessionの sendDataToAllPeers:withDataMode:error:を呼び 出す 受信 receiveData:fromPeer:inSession:context:が呼び 出される setDataReceiveHandler:withContextを書き忘れ ていると呼び出されません12年7月23日月曜日
  20. 20. sendDataToAllPeers:withDataMode:err or NSDataにして送ります sendData:toPeers:withDataMode:errorを使えば特 定の接続先に送信できます12年7月23日月曜日
  21. 21. withDataMode(Data Transmission Mode) GKSendDataReliable 大容量データなど確実に送信する必要がある場 合に使う GKSendDataUnreliable すぐに到着する必要がある場合に使いますが、 再送信されません あまり気にせずReliableでいいと思います12年7月23日月曜日
  22. 22. receiveData:fromPeer:inSession:contex t もちろんNSDataで入ってきます このメソッド内で非常に長い処理をするべきでは ない(らしい)12年7月23日月曜日
  23. 23. 送受信はこれだけ!12年7月23日月曜日
  24. 24. 切断 disconnectFromAllPeers すべての接続先から切断 disconnectPeerFromAllPeers:で特定の接続先から 切断できます12年7月23日月曜日
  25. 25. Part3.GKSessionDelegate12年7月23日月曜日
  26. 26. GKSessionDelegate session:peer:didChangeState session:didReceiveConnectionRequestFromPeer session:connectionWithPeerFailed:withError: session:didFailWithError 接続状態の判定やリクエストの許可不許可、エ ラー処理ができます12年7月23日月曜日
  27. 27. session:peer:didChangeState: 繋がったり切れたりと、状態が変化すると呼び出 されます12年7月23日月曜日
  28. 28. GKPeerConnectionState GKPeerStateAvailable(接続が使用可能) GKPeerStateUnavailable(接続が使用不可能) GKPeerStateConnected(接続した) GKPeerStateDisconnected(切断した) GKPeerStateConnecting(接続中) それぞれ変化した時に呼ばれます12年7月23日月曜日
  29. 29. session:didReceiveConnectionRequest FromPeer: 接続リクエストがあった時に呼ばれます 許可するならGKSessionの acceptConnectionFromPeer:error:を、許可しない ならdenyConnectionFromPeer:を呼び出します12年7月23日月曜日
  30. 30. connectionErrorFailed&didFailWithError 接続先との通信に失敗した時など、接続・通信エ ラーが発生すると呼ばれます12年7月23日月曜日
  31. 31. まとめ 結構簡単にできたと思います(当社比) 応用すれば何でも送信できると思います 是非チャレンジしてみてください!12年7月23日月曜日
  32. 32. 参考資料 GameKit プログラミングガイド https://developer.apple.com/jp/devcenter/ios/library/documentation/ GameKit_Guide.pdf 【iOS4】初めてのBluetoothプログラミング - おいしいCocoaの飲み方 http://ip7.biz/wordpress/?p=260 Cocoaの日々: [iOS] GameKit - Bluetoothを使った iOSデバイス間の通信 http://cocoadays.blogspot.jp/2010/12/gamekit-bluetooth-ios.html iPhone Bluetoothプログラミング / DevX - インターネットコム コラム http://japan.internet.com/column/developer/20100216/26.html12年7月23日月曜日

×