LoginSignup
26
25

More than 5 years have passed since last update.

Nearby Messages APIとEddystoneを連携する

Posted at

過去の記事でEddystoneとNearby Messages APIについてそれぞれ触れてきました。今回はNearby Messages APIとEddystoneを連携して使うところに挑戦してみます。

【参考】

連携の流れ

EddystoneとNearby Messages APIを連携させるとき、Eddystoneから直接データを渡すのではなくAPIを介して連携を行います。
流れとしてはざっくりと下記のようになります。

  1. Proximity Beacon APIを有効にする
  2. Proximity Beacon APIにBeacon (Eddystone)を登録する
  3. Proximity Beacon APIでBeaconと情報を紐付ける
  4. Nearby Messages APIでEddystoneのUIDを受信する
  5. Nearby Messages APIがProximity Beacon APIで登録した情報を取得する

Proximity Beacon APIを有効にする

Nearby Messages APIの時のようにGoogle Developers Consoleから登録が必要です。

  1. Google Developers Consoleにアクセス
  2. 前回Nearby Messages APIを有効にしたプロジェクトを選択する
  3. サイドメニューのAPIと認証 > APIをクリック
  4. 検索窓にGoogle Proximity Beacon APIと入力して出てきたものを選択、APIを有効にするボタンをクリック
  5. サイドメニューから認証情報をクリックして必要な認証情報を登録する。
    認証情報の登録については次で説明します。

Beacon登録用アプリを設定する

Eddystoneとの連携にはProximity Beacon APIを使ってBeacon情報を登録する必要があります。今回はBeaconを登録するためにGoogleがサンプルとして用意しているAndroidアプリを使います。

Beacon登録用アプリの準備

GitHubからGoogleのサンプルアプリをクローンして使います。
AndroidとiOS両方ありますが今回はAndroidアプリを使います。

Beacon登録用アプリの認証情報設定

登録APIを使うために認証情報を設定します。
必要な情報は「パッケージ名」と「証明書のフィンガープリント(SHA-1)」の2つです。

パッケージ名はサンプルアプリをそのまま使うのでcom.google.sample.beaconserviceです。
証明書のSHA-1はアプリの署名に使うkeystoreに対して下記のコマンドを実行して確認します。debug.keystoreでも構いません。

keytool -list -v -keystore mystore.keystore

確認したら早速登録します。

  1. サイドメニューから認証情報をクリック
  2. 認証情報を追加 > APIキーをクリック
  3. 必要な情報を入力して保存をクリック
  4. 認証情報を追加 > OAuth 2.0 クライアントIDをクリック
  5. 必要な情報を入力して作成をクリック

これでサンプルアプリからBeaconの情報を登録できるようになるはずです。

Beaconを登録する

Beaconを登録する準備ができたので、実際の登録を行っていきます。
残念ながらEddystoneの実機を持っていないので以前の記事でも使用したGoogleのEddystoneサンプルアプリTxEddystone-UI)を使います。

  1. TxEddystone-UIをビルドして起動した状態でブロードキャストを開始
  2. Beacon登録アプリ(Beacon Service Demo App)を起動してAPIの認証情報を設定したアカウントを選択
  3. Beacon Service Demo AppのSCANボタンをクリック
  4. 表示されたBeaconのUIDを選択、情報を編集してREGISTERをクリックして登録

しかし、TxEddystone-UIを起動した直後の状態ではNot Authorizedと表示されてしまいます。

tx1.pngScreenshot_2015-08-30-06-50-00.pngScreenshot_2015-08-30-06-50-04.png

これは、このUIDがすでに他の人によって登録されており、自分に情報の編集権限が無いということです。
したがって、実際の登録を行うにはRNDボタンを適当にクリックして他の人がまだ登録していないUIDを見つける必要があります。

未登録UIDの場合、一覧には鍵が開いたアイコンで表示されます。選択するとまだ登録されていないため404となりますが問題ありません。

Screenshot_2015-08-30-07-13-05.pngScreenshot_2015-08-30-07-14-06.png

いろいろと情報を入力してREGISTERをクリックして登録に成功するとStatusがACTIVEになります。

Screenshot_2015-08-30-07-15-21.png

Nearby Messages APIでメッセージとして受け取れるデータはAttachmentとして登録された情報になります。
今回は前回の記事で作ったチャット風アプリでメッセージを受信するために、DataにチャットメッセージのJSONを入れておきます。

{
    "id":"00000000-aaaa-bbbb-cccc-dddddddddddd",
    "text":"Sample beacon is near you!",
    "timestamp":0,
    "type":"beacon-message"
}

長くなりましたがこれでBeacon(Eddystone)の準備が完了です。

Nearby Messages APIでEddystoneをハンドリング

基本的に前回の記事で作ったものそのまま、特別な処理を入れなくてもEddystoneに紐付けられたメッセージを受信することが出来てしまいます。
TxEddystone-UIでブロードキャストを開始、Eddystoneの信号を検知するとMessageListener#onFoundが呼ばれてメッセージが表示されるはずです。

D/MainActivity﹕ onFound: Message{namespace='nearby-sample', type='beacon-message', content=[119 bytes]}

Screenshot_2015-08-30-11-39-11.png

まとめ

EddystoneとNearby Messages APIを連携するためには、Proximity Beacon APIを使用してBeacon情報を登録する必要があります。しかし、Eddystoneに紐付くメッセージの受信自体はNearby Messages APIのみで非常に簡単に行えるため汎用性は高そうです。
ただ、Beacon登録時に付与した位置情報などの情報は別途Proximity Beacon APIで取得する必要があるのでその辺りの情報が必要な場合は手間がかかります。

26
25
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
26
25