FC2ブログ
 
■プロフィール

クリエイトウェーブ

Author:クリエイトウェーブ
開発における、諸々を書いていきたいなと思っています。
mail : info@createwave.jp

■最近の記事
■カテゴリー
■最近のコメント
■月別アーカイブ
■最近のトラックバック
■ブログ内検索

■RSSフィード
■リンク
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


カテゴリー:スポンサー広告 |
iosでFireBaseのCloudStorageからダウンロードできない
昨日、Unity上でCloud Storageからファイルをダウンロードするのを書いたばかりですが、iosの実機に書き出してみたところうまくいかない事がわかりました。

アンドロイド実機問題なし、UnityEditor上でもプラットフォームをios設定にしていても問題ありません。
ダウンロード先は、Application.temporaryCachePathにしています。

パーミッションみたいな設定があるのか、そもそもiosではダウンロードできないのか・・・よくわかりません。
方法あるのかわかりませんが、一度Cloud Storage上のデータをUnity上でメモリ上にバイナリ形式で読み込んでおいて、Application.temporaryCachePathにUnity上のC#で書き出す事にしました。



dotnet4版のFireBaseSDKを使って昨日書いたとおりでコルーチンで処理を判別しています。
なんかスッキリしないけど、いい方法はあるのだろうか。。。

スポンサーサイト
カテゴリー:Unity&FireBase | TM(0) | CM(0)
UnityでFireBaseのCloudStorageのダウンロード後の処理ができなくなった・・・
今までUnityでFireBaseのCloud Storageからファイルをダウンロードしたあとの処理を以下のようにしていました。


しかし、FireBaseSDKを.Net4版にしたら以下のように、命令を受け付けなくなった

なんか別スレッドなので処理できないみたいのがコンソールに出てるし、thisもとれない・・・
Invokeやコルーチンの命令書いても動かない・・・
いったい、どうすればいいんだ

色々実験したら、変数には値が入るので、予めコルーチンを動かしておいて、変数で処理するようにしました


他にいい方法はないだろうか・・・
判るまでしばらくこれでいきます。。

カテゴリー:Unity&FireBase | TM(0) | CM(0)
FireBaseの匿名認証のIDが、インストール毎に変わるようになったのかな?
FireBaseのUserIDじゃなく、UserTokenを使う
で書きましたし、ちょっと検索すると同じ事かいてるのにひっかかると思いますが、FioreBaseの匿名認証はアプリをアンインストールして、インストールし直すと同じIDになってました。

実験もしましたし、FireBaseIDでアプリ管理していたらガチャゲー作ってもリセマラ出来ないなとか言っていたのですが、仕様変わったのかな?

firebase_unity_sdk_5.4.3から、SDKの内容が「dotnet3」フォルダと「dotnet4」フォルダに分かれたので「dotnet4」にしてみたんですが
インストールするたびに、匿名IDが変化するようになってしまいました。

アンインストールしてインストールしなおさないと変わらないので、別に問題ないのですが、仕様かわったのかな?とちょっと気になってます。「dotnet3」のSDKでも同じなのかな?

とりあえず「dotnet4」SDKの方を使おうと思いますが

カテゴリー:Unity&FireBase | TM(0) | CM(0)
FireBaseのUserIDじゃなく、UserTokenを使う
あけましておめでとうございます。
今年も、UnityとFireBaseガンガンやっていきます。

さて、早速ですが、UnityとFioreBaseのCloudFunctionでやりとりするときに、FioreBaseのUserIDを使うのがシンプルですが、UserTokenを使う手もあります。
トークンは、CloudFunction上でUserIDに変換され、トークンは一定時間で変化するのでセキュリティ的にもUserIDで直接やりとりするよりも強力です。

まずは、Unity側
-----------------------------------------------------------
Firebase.Auth.FirebaseUser user = auth.CurrentUser;
user.TokenAsync(true).ContinueWith(task => {
 if (task.IsCanceled) {
   Debug.LogError("TokenAsync was canceled.");
   return;
 }

 if (task.IsFaulted) {
   Debug.LogError("TokenAsync encountered an error: " + task.Exception);
   return;
 }
 string token = task.Result;//ここでトークンを取得
});
-----------------------------------------------------------
こんな感じです。

次に、受け取ったトークンをUserIDに変換するCloudFunction側
-----------------------------------------------------------
admin.auth().verifyIdToken(token)
 .then(function (decodedToken) {
   fireBaseId = decodedToken.uid;//変換されたUserID
   return
 }).catch(function (error) {
   //エラー処理
});
-----------------------------------------------------------
こんな感じです。


カテゴリー:Unity&FireBase | TM(0) | CM(0)
スマートフォンのFireBase匿名ログインで毎回IDを変える方法
そんな使い方する人はいないと思いますが、FireBaseの匿名認証で毎回IDを変える方法です。

ご存知の方も多いと思いますが、FireBaseの匿名認証は、スマートフォンでログインする場合、毎回同じIDになります。
例え匿名認証してるアプリをアンインストールして、インストールし直したとしても同じIDになります。

対して、開発中のPCのUnityEditorだと毎回変わってしまうので、厄介だったりするのですが、前に作ったスマートフォン用カジュアルゲームにランキングをつけているんですが、どう考えても毎回ログインIDが変わってるという事象に遭遇しました。

プレイ本人の最高点を更新する形にしていたはずなのですが(つまり、1ユーザー1つのデータしかもたない)、なぜか毎回登録されて前にプレイした自分の点数が別人扱いになっている。。。 なぜじゃ・・FireBaseの仕様が変わったのかなと思ってたら違いました。

FirebaseAuth.DefaultInstance.SignOut();

この1行を実行してるせいだった・・・
FireBaseのRealTimeDBは、Unityとソケット接続で常時接続なんていう事をやれる仕組みなので、ランキング登録したあとは、
SignOut();
したほうがいいのかな。。。と、よく調べもせず書いてしまったのがうかつでした。

サインアウトは、FireBaseの接続をサインアウトするのではなく、ログイン関係含むFireBaseのシステムからサインアウトする(リセットする)って意味だったようです。

FirebaseAuth.DefaultInstance.SignOut();
を実行すると、前の情報はなくなってるので、新しい匿名IDが生成されます。
これで毎回匿名IDを変える事が可能。。。って使いみちあるのかな。

匿名IDは上記のようにサインアウトしない限り、アプリをアンインストールして再インストールしても変化しない為、匿名ID使ったガチャゲーだと、リセマラできないシステムになりますね・・・ と言っていたのですが、IDリセットボタンをつければ、ユーザーが毎回ダウンロード&インストールしなくてもリセマラ出来るシステムが出来上がりますね・・・・ わざわざそんな使い方する必要はないですが・・

カテゴリー:Unity&FireBase | TM(0) | CM(0)
次のページ

FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。