iOSアプリと連携させて使えるデバイスたち

第4回 1,600万色の表現力をもつLED電球「hue」と連携するiOSアプリをつくる その2:応用編

この記事を読むのに必要な時間:およそ 3 分

前回の記事その1:基礎編では,Philips hueの特長,HueSDKのプロジェクトへの導入方法,基本的な機能の実装方法を一通り紹介しました。本記事ではそれらを踏まえた応用編として,iOS7の新機能+Parse+hueを使ったアプリの実装方法を説明します。

プッシュ通知がきたときにhueを光らせる

iOS7登場以前はプッシュ通知を送ることはできても,ユーザがアプリを起動しない限りは任意の処理を行うことはできませんでした。しかし,iOS7からプッシュ通知(Remote notification)をバックグラウンドで処理できるようになり,Background Fetchも可能になり,さらに画面表示や通知音を出さない「サイレントプッシュ」も可能になりました。

そこで,これらのiOS7新機能を活用し,プッシュ通知の受信をhueの明滅で知らせるサンプルを作成します。これにより,⁠その1」で紹介したundaの事例「新規ユーザがサインアップしたらhueが光る」のように,何らかの重要な通知を,ランプの明滅という気付きやすいアラートで知らせることが可能になります。

上述したiOS7の新機能のおかげで,hueを光らせるためにアプリを起動する必要がない,という点がポイントです。また,通常はプッシュ通知を送るためにはサーバを用意する必要があるのですが,本記事ではモバイル向けバックエンドを代替わりしてくれるクラウドサービスParseを使用してプッシュ通知を送信する手順を紹介します。

①Parseにサインアップ,新規アプリを作成する

サインアップは Github アカウントでログインするだけ。

あとは,会社の形態を選択し,アプリ名を入力すれば新規アプリが作成されます。

②Parse SDKをプロジェクトに導入する

HueSDK入りプロジェクトとして,⁠その1:基礎編」で説明したとおり "QuickStartApp_iOS" を複製したものを用意します。

Parseのダウンロードページより,iOS用SDKをダウンロードします。

zipファイルを解凍すると出てくる,Parse.frameworkをプロジェクトに追加し,下記依存フレームワークもプロジェクトにリンクしておきます。

  • AudioToolbox.framework
  • CFNetwork.framework
  • CoreGraphics.framework
  • CoreLocation.framework
  • libz.dylib
  • MobileCoreServices.framework
  • QuartzCore.framework
  • Security.framework
  • StoreKit.framework
  • SystemConfiguration.framework

ここでヘッダをインポートしてビルドしてみると,Facebook SDK関連のUndefined symbolsエラーが大量に出てきます。hueを利用したプロジェクト [Build Settings] > [Other Linker Flags] で "-ObjC" フラグを削除するか,それで他のライブラリの利用に不都合が出る場合は,Facebook iOS SDKを追加してください。

参考記事:

③AppDelegateの実装

AppDelegate.m でヘッダをインポートします。

#import <Parse/Parse.h>

application:didFinishLaunchingWithOptions:で,ParseのApplication IdとClient Keyをセットするメソッドと,⁠通常のプッシュ通知の実装と同様に)⁠ registerForRemoteNotificationTypes: メソッドをコールします。

[Parse setApplicationId:@"YOUR_APPLICATION_ID"
              clientKey:@"YOUR_CLIENT_KEY"];

[application registerForRemoteNotificationTypes:
 UIRemoteNotificationTypeBadge|
 UIRemoteNotificationTypeAlert|
 UIRemoteNotificationTypeSound];

Application IdとClient Keyは,Parseダッシュボードの [Settings] > [Application Keys] で確認できるほか,クイックスタートガイドでも確認できます。

デバイストークンを受け取るデリゲートメソッドapplication:didRegisterForRemoteNotificationsWithDeviceToken:を次のように実装します。

- (void)application:(UIApplication *)application
didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
    PFInstallation *currentInstallation = [PFInstallation currentInstallation];
    [currentInstallation setDeviceTokenFromData:deviceToken];
    [currentInstallation saveInBackground];
}

④証明書を作成

iOS Dev Centerで証明書を作成します。

まず,App ID作成時に,App Servicesの欄で"Push Notifications"にチェックを入れておきます。

画像

AppIDの編集画面からCertificateを作成します(通常のCertificate作成手順と同様なので,ここでは詳細を割愛します)⁠

画像

作成したSSL証明書をダウンロードし,クリックしてキーチェーンにインストールします。

作成したAppIDでProvisioning Profileを作成し,ダウンロード&インストール,Xcodeプロジェクトでの設定(Info.plistのBundle IDと,Build SettingsのCode Signing Identityの設定)もしておきます。

著者プロフィール

堤修一(つつみしゅういち)

1978年生まれ。京都大学工学部を卒業後,同大学院修了。その後,NTTデータにて音声認識技術の研究開発,キヤノンにて画像処理機能の設計に携わる。

2010年より面白法人カヤックに入社。3年間ほぼiOSアプリ開発に専念し,フルスクラッチで開発しリリースしたアプリは30本以上。代表作は150万ユーザを突破した「バウンドモンスターズ」,AppStore Best of 2012を獲得した「タップ忍者」,カンヌ国際広告祭でブロンズを獲得した「Domino's App」など。

現在は,米国シリコンバレーのマウンテンビューにあるAppSocially社の一員として活躍中。

著書=『iOSアプリ開発 達人のレシピ100―開発現場で実証された実用コード集』

ブログ=Over&Outその後

Github=shu223

Twitter=shu223

コメント

コメントの記入