概要
過去にデータの保存と取得を試しました
リアルタイムなやり取りはやっていなかったので試してみました
また今回は 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 -> ルール
ちなみに認証をオンにして使いたい場合は Anonymous 認証ですが、こちらを御覧ください
テストデータを登録する
コンソールからデータを登録してみます
Database -> データ
すると登録した瞬間コンソールに登録した数字が表示されると思います
最後に
Firebase でリアルタイムデータベースを使って挙動を確認してみました
今回の場合構造的なデータを登録したので構造が間違っているとキャストに失敗して Exception が発生します
データの登録に関しては setValue をコールする感じです
今回はシミュレータ+管理コンソールでやりましたが次回は実機+シミュレータでやってみたいと思います
0 件のコメント:
コメントを投稿