iPhone/iPadスマートアプリ開発レシピ
iPhone/iPadスマートアプリ開発レシピ(4)

iPhoneアプリでBluetooth通信を使うための基礎知識


クラスメソッド株式会社
開発部 掛川敦史
2012/6/19
スマートフォンの「スマート」は、さまざまなセンサやハードウェアを使うところにある。本連載で、さまざまなセンサやハードウェアを使うiOSiPhoneiPadiPod touchのスマートなアプリを作ってみよう

 今回は、Bluetoothを利用した通信を行うためのフレームワークである「Core Bluetooth」と、Bluetoothなどでの端末間通信のゲーム機能を含めたゲーム開発用フレームワーク「Game Kit」について、サンプルアプリを例に利用方法を紹介します。

意外と知らない? 「Bluetooth」は3種類ある

- PR -

 Bluetoothはデバイス間における近距離無線通信を行うための規格で、「Bluetooth SIG」という団体が仕様の策定や機器の認証を行っています。本稿執筆時の最新バージョンは4.0です。

 Bluetooth 4.0では、低消費電力モードに対応する規格である「Bluetooth Low Energy(BLE/Bluetooth LE)」が採用されており、これは従来のBluetoothとの間に互換性がありません。

 ただし、Bluetooth 4.0対応機器の一部には、Bluetooth LEと従来のBluetoothに対応するデュアルモードのデバイスが存在します。Bluetooth LEの登場によって、複雑になってしまったデバイス間の対応状況を整理するために、Bluetooth対応デバイスは現在次の3つの呼称で分類されています。

【1】Bluetooth Smart

 Bluetooth LEによる低消費電力モードでのみ通信を行うデバイスの呼称です。センサなどで情報を収集し、情報を送信する子機に当たるデバイスが想定されています。Bluetooth Smart Readyデバイスとの間でのみ通信が可能です。

【2】Bluetooth Smart Ready

 Bluetooth LEによる低消費電力モードで通信をする子機との通信に対応し、なおかつ、従来のBluetooth機器との通信ができるデバイスの呼称です。

【3】Bluetooth

 従来のBluetooth通信のみを行うデバイスの呼称です。Bluetooth Smartデバイスとの通信はできません。

Bluetoothのさまざまな「プロファイル」

 なお、実際にデバイス間でBluetoothによる通信を行うためには、上記の互換性に加え、それぞれのデバイスが同じ「プロファイル」を持っている必要があります。プロファイルとは、通信の際の手順を標準化したものです。

 Bluetoothイヤフォンに音声データを送信するための「A2DP」や、電話帳データを転送するための「PBAP」など、実にさまざまなプロファイルが存在します。

Bluetooth LE対応機器

 Bluetooth LEに対応するいくつかのプロファイルが、昨年夏にBluetooth SIGによって正式に承認されました。これにより、Wahoo Fitnessの心拍計「Blue HR」や、Kickstarterで出資を募った腕時計「Pebble」「Cuckoo」など、iOSデバイスと連携できるBluetooth Smart機器が続々と出てきています。



iOSデバイスのBluetooth対応状況

 iOSデバイスのBluetooth対応状況は次の通りです。

Bluetooth 4.0(Bluetooth Smart Ready) Bluetooth 2.1+EDR
iPhone 4S
新しい iPad(第3世代)
iPhone 4
iPad 2
iPod touch(第4世代)

 iPhone 4Sと新しいiPad(第3世代)はBluetooth Smart Ready機器なので、Bluetooth Smart機器との通信が可能です。iOSのプロファイルの対応状況については、「iOS:対応している Bluetooth プロファイル」を参照してください。

「Game Kit」によるBluetooth通信

 「Game Kit」フレームワークは、iOSデバイス間のPtoP通信を簡単に実現するためのAPIを提供しています。PtoP通信はBluetoothもしくはWiFiによって行えます。なお、このAPIによるiOSデバイス以外との通信は行えません。Game Kitは、iOS SDK 3.0以降で利用できます。

 ここではGame Kitを利用した複数デバイス間でのリアルタイムお絵描きアプリのサンプルを例に、Game KitによるBluetooth通信の利用方法を見ていきます。

 このサンプルアプリは、以下の環境で動作を確認しています。ソースコードはこちらからダウンロードできます

  • 開発環境:Xcode 4.3.2、iOS SDK 5.1
  • 動作環境:iPhone 4(iOS 5.1.1)、iPad 2(iOS 5.1.1)

Game Kitを使ったアプリの実装


接続デバイスの探索

 まずは、PtoP接続するデバイスを探索します。接続をするデバイスを探索する部分の処理です。

// ピアピッカーを作成
GKPeerPickerController* picker = [[GKPeerPickerController alloc] init];
picker.delegate = self;
// 接続タイプはBluetoothのみ
picker.connectionTypesMask = GKPeerPickerConnectionTypeNearby;
// ピアピッカーを表示
[picker show];

 GKPeerPickerControllerクラスはiOSデバイス同士のBluetooth接続に必要な処理とUIを提供しており、PtoP通信を確立する手順が簡単に実装できるようになっています。

 ただし、これを利用する場合は、複数のデバイスとの同時接続やユーザーの操作なしでの接続ができないという制限があります。

 GKPeerPickerControllerのshowメソッドを呼び出すと、以下のような画面が表示されて接続するデバイスを探索します。

 GKPeerPickerControllerによる処理の結果は、GKPeerPickerControllerDelegateプロトコルに適合したデリゲートでハンドリングします。

 また、GKPeerPickerControllerのconnectionTypeMaskプロパティはピアの接続方式を設定します。選択候補にはWiFiを利用した接続も存在しますが、今回はBluetoothを利用して接続するので、GKPeerPickerConnectionTypeNearbyをセットしています。

 なお、このプロパティはビットフラグになっているので、以下のようにBluetoothとWiFiを両方設定できます。

picker.connectionTypesMask = GKPeerPickerConnectionTypeOnline | GKPeerPickerConnectionTypeNearby;

 この場合、BluetoothとWiFiのどちらで接続をするかをユーザーに選択させるためのダイアログが表示されます。

 GKPeerPickerControllerが接続処理をサポートしているのはBluetooth接続のみなので、WiFiが選択された場合にはGKPeerPickerControllerDelegateのpeerPickerController:didSelectConnectionType:メソッドを実装してPtoP接続の処理を自前で作成する必要があります。

 引き続き次ページでは、Game Kitを使ったBluetooth接続アプリの作り方を解説し、Bluetooth LE対応デバイス通信用フレームワーク「Core Bluetooth」を紹介します。

  1-2-3-4

 INDEX
iPhone/iPadスマートアプリ開発レシピ(4) 
iPhoneアプリでBluetooth通信を使うための基礎知識
Page1
意外と知らない? 「Bluetooth」は3種類ある
Bluetooth LE対応機器
iOSデバイスのBluetooth対応状況
「Game Kit」によるBluetooth通信
Game Kitを使ったアプリの実装
  Page2
「Core Bluetooth」によるBluetooth LE通信
  Page3
Core Bluetoothを使ったアプリの実装
  Page4
Bluetoothでスマホは生活に欠かせないものに



 Smart&Social フォーラム トップページへ



Smart & Social フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Smart & Social 記事ランキング

本日 月間