Firebase Swift テクノロジー

Firebase RealtimeDatabaseからデータを取得してiPhoneアプリ上に表示する

投稿日:

前回はラズパイに接続したセンサBME280から温度等のデータをFirebaseのRealtimeDatabaseにアップするところまで実施しました。

今回はアップした温度と時間を表示するiPhoneアプリを作りました。

データベースの新しいデータがアップされたら自動的に更新するようにしています。

以下がアプリの画面です。

 

1.FirebaseとXcodeの連携


Firebaseのプロジェクトからアプリを追加でiOSを選択

XcodeのバンドルIDをFirebaseのiOSバンドルIDにコピーする

GoogleService-Info.plistをダウンロードし、Xcodeプロジェクトに追加する。

Firebase側の設定は以上で完了です。

次にXcodeでFirebaseを扱えるよう設定します。まずはFirebaseインストールの前準備としてCocoa Podsをインストールします。

ターミナルを開き、Xcodeのプロジェクトのあるパスにcdして、以下コマンドを実行します。

以下のようにPodfileが出来上がるので、ファイルに下記を追記します。

  # Pods for firebase_bme280
    pod 'Firebase'
    pod 'Firebase/Auth'
    pod 'Firebase/Database'
 
その後、podからFirebaseライブラリをインストールします。
 

私の環境では先に以下のコマンドでgitのバッファリング容量を16Mに設定する必要がありました。

FirebaseライブラリがXcodeプロジェクトにインストールされたのでコーディングに移ります。

 

2. データベースからアプリに反映する


AppDelegate.swiftに

・import Firebase

・FirebaseApp.configure()

を追記します。

次にViewController.swiftを以下のように記述します。

<ソースコード>

ポイントとなるFirebaseからデータを取得している箇所は以下となります。

.childAddedはデータベースにアイテムが追加されたらsnapShotに追加されたアイテムを入れて、in以下の処理が動作します。いわゆるクロージャです。

RealtimeDatabaseは個々のアイテムを参照することはできず、上記のようなイベント発生によってデータを自動的に取り出す機能に役立つのでよくチャットアプリに使われているようです。

今回は、センサデータがデータベースに追加されたらアプリに表示としています。

snapShotの中身をprintしてみますと確かに辞書型のセンサデータが取得できている事が分かります。

あとは辞書型のデータから必要なデータを抜きしてラベルに放り込みます。

データベースは以下のような構成となっています。

なので例えばtempatureを取り出す場合には

snapShotData.value(forKeyPath: "bme280.tempature")

と風にすればOKです。

 

これでbuildしてiPhoneにアプリ作成すれば完成です。

 

以上。

 

 

 

-Firebase, Swift, テクノロジー

Copyright© IT系でないエンジニアの転身 , 2020 All Rights Reserved Powered by STINGER.