2018年2月14日水曜日

Firebase でリアルタイムデータベースを使ってみた

概要

過去にデータの保存と取得を試しました
リアルタイムなやり取りはやっていなかったので試してみました
また今回は SpriteKit を使っています

環境

  • macOS 10.13.2
  • Xcode 9.2 (9C40b)
  • Firebase 4.8.2

Firebase にアプリを追加

コンソール画面から追加しましょう
追加したら
GoogleService-Info.plist をプロジェクトに追加します

ライブラリインストール

  • pod init
  • vim Podfile
# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'

target 'test-proj' do
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
  use_frameworks!

  # Pods for test-proj
  pod 'Firebase/Core'
  pod 'Firebase/Database'
  pod 'Firebase/AdMob'

  target 'test-projTests' do
    inherit! :search_paths
    # Pods for testing
  end

  target 'test-projUITests' do
    inherit! :search_paths
    # Pods for testing
  end

end
  • pod install

初期化

  • AppDelegate.swift
import UIKit
import Firebase

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        FirebaseApp.configure()
        return true
    }
}

didFinishLaunchingWithOptions 内で FirebaseApp.configure() を実行しているだけです

リアルタイムにデータを取得する

  • GameScene.swift
import SpriteKit
import FirebaseDatabase

class GameScene: BaseScene {

    let rootRef = Database.database().reference()

    override func didMove(to view: SKView) {
        let bmref = rootRef.child("test-proj")
        bmref.observe(.value, with: { (snapshot) in
            let value = snapshot.value as? NSDictionary
            let room = value!["rooms"] as? NSDictionary
            print(room!["id"] as! Int)
        })
    }
}

observe を登録することで、そのコールバック内でデータが更新されたときの挙動を処理することができます
今回は階層的なデータを登録してそのデータを表示するだけです

動作確認

動作確認の前にシミュレータでアプリを起動しておきます
今回はコンソールにデバッグ表示するだけです
.sks ファイルには Hello World のラベルが定義されていますが気にしません

認証をオフにする

とりあえず今回はテストなので前許可にしちゃいます
コンソールから設定しましょう

Database -> ルール

firebase_realtime1.png

ちなみに認証をオンにして使いたい場合は Anonymous 認証ですが、こちらを御覧ください

テストデータを登録する

コンソールからデータを登録してみます

Database -> データ

firebase_realtime2.png

すると登録した瞬間コンソールに登録した数字が表示されると思います
firebase_realtime3.png

最後に

Firebase でリアルタイムデータベースを使って挙動を確認してみました
今回の場合構造的なデータを登録したので構造が間違っているとキャストに失敗して Exception が発生します

データの登録に関しては setValue をコールする感じです

今回はシミュレータ+管理コンソールでやりましたが次回は実機+シミュレータでやってみたいと思います 

参考サイト

0 件のコメント:

コメントを投稿