|
|
| 行22: |
行22: |
| | string key = FirebaseDatabase.DefaultInstance.GetReference("user").Push().Key; | | string key = FirebaseDatabase.DefaultInstance.GetReference("user").Push().Key; |
| | | | |
| − | ==リスト==
| |
| − | 追加、更新、削除を検知
| |
| − | <pre>
| |
| − | using UnityEngine;
| |
| − | using UnityEngine.UI;
| |
| − | using Firebase.Database;
| |
| − | using System.Collections.Generic;
| |
| − | using System;
| |
| − |
| |
| − | public class SampleScene : MonoBehaviour
| |
| − | {
| |
| − | void Start()
| |
| − | {
| |
| − | DatabaseReference userReference = FirebaseDatabase.DefaultInstance.GetReference("user");
| |
| − | userReference.ChildAdded += HandleChildAdded;
| |
| − | userReference.ChildChanged += HandleChildChanged;
| |
| − | userReference.ChildRemoved += HandleChildRemoved;
| |
| − |
| |
| − | InputField input = GameObject.Find("/Canvas/InputField").GetComponent<InputField>();
| |
| − | GameObject.Find("AddButton").GetComponent<Button>().onClick.AddListener(delegate {
| |
| − | AddUser(input.text);
| |
| − | });
| |
| − | }
| |
| − | // 受信 追加された時
| |
| − | void HandleChildAdded(object sender, ChildChangedEventArgs args)
| |
| − | {
| |
| − | if (args.DatabaseError != null)
| |
| − | {
| |
| − | Debug.LogError(args.DatabaseError.Message);
| |
| − | return;
| |
| − | }
| |
| − | string json = args.Snapshot.GetRawJsonValue();
| |
| − | Debug.Log("HandleChildAdded=" + json); // {"email":"ttt@example","username":"ttt"}
| |
| − |
| |
| − | User user = JsonUtility.FromJson<User>(json);
| |
| − | Debug.Log("HandleChildAdded username=" + user.username);
| |
| − | }
| |
| − | // 受信 更新された時
| |
| − | void HandleChildChanged(object sender, ChildChangedEventArgs args)
| |
| − | {
| |
| − | if (args.DatabaseError != null)
| |
| − | {
| |
| − | Debug.LogError(args.DatabaseError.Message);
| |
| − | return;
| |
| − | }
| |
| − | string json = args.Snapshot.GetRawJsonValue();
| |
| − | Debug.Log("HandleChildChanged=" + json); // {"email":"ttt@example","username":"ttt"}
| |
| − |
| |
| − | User user = JsonUtility.FromJson<User>(json);
| |
| − | Debug.Log("HandleChildChanged username=" + user.username);
| |
| − | }
| |
| − | // 受信 削除された時
| |
| − | void HandleChildRemoved(object sender, ChildChangedEventArgs args)
| |
| − | {
| |
| − | if (args.DatabaseError != null)
| |
| − | {
| |
| − | Debug.LogError(args.DatabaseError.Message);
| |
| − | return;
| |
| − | }
| |
| − | string json = args.Snapshot.GetRawJsonValue();
| |
| − | Debug.Log("HandleChildRemoved=" + json); // {"email":"ttt@example","username":"ttt"}
| |
| − |
| |
| − | User user = JsonUtility.FromJson<User>(json);
| |
| − | Debug.Log("HandleChildRemoved username=" + user.username);
| |
| − | }
| |
| − | void AddUser(string name)
| |
| − | {
| |
| − | User user = new User(name, name + "@example");
| |
| − | string json = JsonUtility.ToJson(user); // {"email":"ttt@example","username":"ttt"}
| |
| − | // userに存在しないキーを生成
| |
| − | // FirebaseDatabase.DefaultInstance.GetReference("user").Push().Key;
| |
| − | #if Unity_EDITOR
| |
| − | string userId = "pc";
| |
| − | #elif UNITY_ANDROID
| |
| − | string userId = "android";
| |
| − | #elif UNITY_IPHONE
| |
| − | string userId = "iphone";
| |
| − | #endif
| |
| − | FirebaseDatabase.DefaultInstance.GetReference("user").Child(userId)
| |
| − | .SetRawJsonValueAsync(json);
| |
| − | }
| |
| − | }
| |
| − | </pre>
| |
| | | | |
| | ==切断== | | ==切断== |