Successfully reported this slideshow.
Your SlideShare is downloading. ×

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

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Loading in …3
×

Check these out next

1 of 32 Ad

More Related Content

Similar to GameKitを使ったBluetoothプログラミング (20)

Recently uploaded (20)

Advertisement

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

  1. 1. GameKitを使った 楽しい Bluetoothプログラミング @taiko19xx on SWWDC 2012/7/21 12年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.GKSessionDelegate 12年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.html 12年7月23日月曜日

×