使用バージョン
- Unity 2019.4.3f1
- PlayFab 2.90.200713
本記事の目的
Unity+PlayFabを使い、PlayFabからモバイルアプリの強制アップデートを促す
本記事で得られないもの
ログイン時以外での厳格な強制アップデート
(通信のたびのバージョンコードのチェック)
はじめに
この記事はUnityやPlayFabのインストールや基本的な使い方には触れていません
なので説明を省く箇所が多々あります
タイトルデータの登録
まず、PlayFabの画面に行き、コンテンツからタイトルデータを登録します
登録するのは
AndroidVersion
とiOSVersion
です
モバイルを両方のOSで出す場合は必ず分けておきましょう。
運営してると共通のバージョンコードではとても管理しきれないためです。
ここではAndroidVersionに1.0.1を設定しておきます。
PlayFabでの操作は以上になります
Unityでログインからバージョンチェックまで
いきなりですがコードはこちらです
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using PlayFab;
using PlayFab.ClientModels;
public class PlayFabLogin : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
var request = new LoginWithCustomIDRequest {CustomId = "MyCustomId", CreateAccount = true};
PlayFabClientAPI.LoginWithCustomID(request, (result =>
{
GetTitleData();
}), error =>
{
Debug.LogError(error.GenerateErrorReport());
});
}
void GetTitleData()
{
PlayFabClientAPI.GetTitleData(new GetTitleDataRequest(), result =>
{
#if UNITY_ANDROID
if (result.Data.ContainsKey("AndroidVersion"))
{
// タイトルデータのバージョン
string serverVersion = result.Data["AndroidVersion"].ToString();
// ローカルのバージョン
string lovalVersion = Application.version;
// 文字列の大小を比較
int compareResult = serverVersion.CompareTo(lovalVersion);
// サーバのバージョンの方が大きかったらストアに飛ばす
if (compareResult == 1)
{
Debug.Log("アプリの更新が必要です");
Application.OpenURL("アプリのストアページURL");
}
else
{
Debug.Log("最新バージョンです");
}
}
#else
Debug.Log("iOSも同じように書く");
#endif
},
error => {
Debug.Log(error.GenerateErrorReport()); }
); }
}
処理の流れとしては
- ログイン
- タイトルデータの取得
- OS 事のバージョンの比較
- 必要であればストアページに飛ばす
です。ログインとタイトルデータの取得は同時にやってもいいですがここではシンプルにするために分けています。
ここまで書けたらProjectSettingsからAndroidにSwitchPlatformをし、Versionを1.0.0にしてみましょう
この状態で実行すると以下のログが出ます
次にVersionを1.0.1にして実行してみると以下のようになると思います
これでバージョンチェックの処理ができました。
注意点
今回の実装ではログイン時にしかバージョンをチェックしないため、
プレイ中のユーザーに対してアップデートを促すことができません
なので、必要ならタイトルデータの更新を適宜行うなどの対応が必要になります