LoginSignup
1
3

More than 3 years have passed since last update.

Unity + PlayFabのタイトルデータを使いモバイルアプリの簡易強制アップデートを作る

Posted at

使用バージョン

  • Unity 2019.4.3f1
  • PlayFab 2.90.200713

本記事の目的

Unity+PlayFabを使い、PlayFabからモバイルアプリの強制アップデートを促す

本記事で得られないもの

ログイン時以外での厳格な強制アップデート
(通信のたびのバージョンコードのチェック)

はじめに

この記事はUnityやPlayFabのインストールや基本的な使い方には触れていません
なので説明を省く箇所が多々あります

タイトルデータの登録

まず、PlayFabの画面に行き、コンテンツからタイトルデータを登録します
タイトル_データ_·_PlayFab.png
登録するのは
AndroidVersioniOSVersionです
モバイルを両方の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にしてみましょう
VersionCheck.png

この状態で実行すると以下のログが出ます
needUpdate.png
次にVersionを1.0.1にして実行してみると以下のようになると思います
VersionUp.png
LatestVersion.png
これでバージョンチェックの処理ができました。

注意点

今回の実装ではログイン時にしかバージョンをチェックしないため、
プレイ中のユーザーに対してアップデートを促すことができません
なので、必要ならタイトルデータの更新を適宜行うなどの対応が必要になります

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3