スマホをiBeacon化して、別のスマホで発見してみた!


こんにちは!
冷たい麺が美味しい季節になりましたね。
今日はそうめん、明日はうどん、明後日は…そうめん!
クラウドソリューション開発部の今野です!

「うわー…。」
ガタンゴトン。
ゴソゴソ。

電車の中。家の鍵が見つからない。

どこを探しても見つからない。
困った。

こんな時に予めセンサーをつけておいて、どこに落ちたかわかるようにできたら便利ですよね。

「iBeacon」というデバイスを使うことでそれが可能になるんです。

iBeaconとは?

Apple社が開発した通知システムです。ビーコンというぐらいなので、いつも「僕はここにいるよ!」とアピールしてくれる仕組みになっています。

それをデバイスに埋め込んで活用されている例が多くあります。
例えば、自動販売機に近づいた時にLINEにクーポンのお知らせが来たり、落とし物をしないようにタグのような形で使われていたりしています。

 

そこで!
今回はiBeacon使って、iBeaconがどこにあるかをスマホで発見できるようにします。
が、みなさん手元にiBeaconがない可能性大なので、スマホをiBeaconと化します。

ここでは、スマホ(検知用)と落とし物スマホ(iBeacon)を作ってみましょう!
落とし物スマホ(iBeacon)を無事見つけられたら…OK!

スマホ(検知側)

ContentView.swift

1.UI表示用のファイルを作成します。

BeaconDetector.swift

2.Beacon検知用のファイルを作成します。

3.Info.plistに以下の権限を追加します。
・「Privacy – Bluetooth Always Usage Description」
・「Privacy – Location Always and When In Use Usage Description」
・「Privacy – Location When In Use Usage Description」

スマホ(iBeacon用)

先ほどのものとは別にプロジェクトを作成して実装していきます。

ContentView.swift

1.UI表示用のSwiftファイルを作成します。

 

BeaconBroadcaster.swift

2.iBeaconとして発信するためのファイルを作成します。

3.Info.plistに以下の権限を追加します。

info.plistに
「Privacy – Bluetooth Always Usage Description」を追加。

起動してみた!

お待ちかね!
両方のスマホでアプリ起動です!
(iBeacon側)

スマホから信号を発信しています。この信号を検知側のスマホが検知して、どれぐらいの距離にあるのか見つけるわけです。
さあ、見つかるのでしょうか?

おお!遠いながらに近くにiBeacon(スマホ)があるそうです!その距離2.04m。

もう少しとのこと。表示が「非常に近い」に切り替わりました。その差0.15mです。

見事に発見です!
距離も0.03m。
かなり縮まっていることがわかりますね。

まとめ

スマホをiBeacon化し、距離を測ることで、無事にiBeacon(スマホ)を発見することができました。
今回使ったライブラリはCore Locationです。

このライブラリにiBeacon検知によるコールバックの呼び出しや、iBeaconとの距離などを測る機能が詰め込まれています。
iBeaconがスマホの一定の距離の近くに現れた・抜け出したに応じてコールバックを受け取ることもできます。(didEnterRegion・didExitRegionというコールバックを使用します)
まだまだiBeaconの仕組みの奥は深い!

さらに発見があればまたお伝えできればと思います。

弊社ではIoTに関連した、様々な案件にチャレンジすることができます。

ぜひ一緒にこれからの未来を作っていきませんか?

最後までご覧いただき、ありがとうございました!