2017年2月10日金曜日

FirebaseをMIT App Inventorから利用する

 「互いに、相手の居場所が変わったら、自動的に自分の端末の地図にそれが表示される」という地図アプリを作りたいとします。

 相手の緯度経度がwebデータベースに格納されるとして、適当な時にそれをチェックしてその位置情報を得て、自分のマップ上に表示すればよい。しかし、それではちょっと不満が残ります。下図のように、相手の居場所が変わったら、自動的に直ちに、自分の端末にそれを示したい!そこで、Firebaseの登場です!実際、以下の図1と図2のプログラムがそれを実現するための全体です。

【プログラム設計】互いに、相手の位置が更新されたら自分の画面に直ちに表示
自分の位置送信ボタンはあるが、相手の「位置受信ボタン」は無い!

 リアルタイムのプッシュ型と言っていいのでしょうか。FirebaseというKey-Value型のWebデータベースがあり、色々な用途があるようです。特にこれが、MIT App Inventor for Android(および、ThunkableAppyBuilderでももちろん)が使えるようになっています。大いに活用したいものです。
 App Inventorには、これまでもKey-Value型のWebデータベースとして、TinyWebDBが有名でした。これとの大きな違いは、Firebaseでは、特定のKey(タグ)に対するValue(値)が(誰かによって)変更された場合、アプリケーション側で自動的にそれを関知してその変更値を受け取ることができる!ことです。すなわち、アプリケーションが自分でデータベースを見に行って、変更があるかどうか調べる必要がありません。それによってプログラムは簡単になります。以下にその部分を示します。

(図1)データベースの値の変更を自動的に受け取る処理部

これを使って、「相手の位置が変わったら、自動的にマップのその位置にマーカーを表示する」例が以下に解説されています。分かりやすくて有用です。

Using Firebase in a real app – “Here I AM!” GPS Demo app

 それを参考に、さらに簡単なプログラムを以下に示します。図1と図2がこのアプリの全てです!

(図2)現在位置をFirebaseへ登録する部分

(注1)相手の位置を受信するボタンはありません!(自動受信です。)
(注2)本当は、自分の位置の送信ボタンも不要です。しかし、そうすると、バッテリーの消費が著しくなりますので、送信ボタンを設置しています。
(注3)とりあえず、2人用に作りましたが、Firebaseへ格納する際に、タグに個人ID情報を加えれば、3人以上もできます。


0 件のコメント:

コメントを投稿