スマートフォンの「スマート」は、さまざまなセンサやハードウェアを使うところにある。本連載で、さまざまなセンサやハードウェアを使うiOS(iPhone、iPad、iPod 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対応状況は次の通りです。
|
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 フォーラム トップページへ |
- 夏休みの自由研究にマイコンボードで「電子サイコロ」を作ったり、音楽プログラミングをしたりしてみよう (2017/7/24)
子ども向け電子工作&プログラミング用マイコンボード「chibi:bit」の基本的な使い方を紹介する企画。夏休みの自由研究に「電子サイコロ」を作ったり、音楽プログラミングをしたりしてみよう - 子ども向け電子工作&プログラミング用マイコンボード「chibi:bit」の基本的な使い方 (2017/7/20)
子ども向け電子工作&プログラミング用マイコンボード「chibi:bit」の基本的な使い方を紹介する。夏休みの子どもの自由研究などに役立てつつ、プログラミングを始めるきっかけにしてみてはいかがだろうか - 3DゲームのAIをiOSのSceneKitとGameplayKitで作る基本 (2017/7/10)
3Dゲーム用のフレームワークSceneKitを使った簡単なアプリ制作を通して、3Dゲーム用の人工知能(AI)について学ぶ - UnityアプリをWebGL、UWP、Android、iOS用としてビルドしてみた (2017/6/27)
アプリをWebで実行できるように書き出す方法やWindows上でUWP、Android、iOS用などにビルドする方法について解説する【Windows 10、Unity 5.6に対応】
|
|