強火で進め

このブログではプログラム関連の記事を中心に書いてます。こちらで( http://blog.livedoor.jp/tsuyobi-outdoor/ ) アウトドア関連の記事も書いてます。

Unity の Analytics 機能が行っているユーザ情報の送信を全て止める方法

※この記事ではあくまで Unity の Analytics 機能についての解説を行っています。実際の運用では別の機能で送信していないか、自分のプログラムで別途送信していないか、サードパーティ製のライブラリなどについても送信していないかチェックする必要が有る事にご注意下さい。

 

はじめに

現在の Apple のストアのガイドラインGoogle の開発者ポリシーなどを確認すると子供向けアプリではユーザ情報の取得について一般的なアプリに比べて一段と気をつける必要が有る事が分かります。

App Store Reviewガイドライン - Apple Developer
https://developer.apple.com/jp/app-store/review/guidelines/#kids-category

ファミリー - Developer Policy Center
https://play.google.com/about/families/#!?zippy_activeEl=families-policy#families-policy

自分のアプリでユーザ情報を取得する必要が無い場合には全ての送信を止めるのが一番手っ取り早いです。今回はその方法を解説します。

なお、 Analytics では無いですがクラッシュや例外レポートを送信する Unity Cloud Diagnostics もユーザの情報を送信してると言えるのでこちらについてもしっかりと確認して必要に応じて無効にして下さい(※デフォルトで有効です)。

Unity IAP については実行時に Analytics 機能を無効化するとダッシュボードで収益の追跡は出来なくなりますが IAP の機能自体は正しく動作する様です。

Unity IAP without Analytics for kids games? - Unity Forum

https://forum.unity.com/threads/unity-iap-without-analytics-for-kids-games.689143/

ちなみに Unity では COPPA へ準拠した実装が簡単に実現出来ます。

f:id:nakamura001:20190823223132p:plain

送信を止める方法

以下のコードをプロジェクトに含める事で送信を止める事ができます。

public class DisableAnalytics : MonoBehaviour
{
    [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]
    public static void OnRuntimeMethodLoad()
    {
        UnityEngine.Analytics.Analytics.enabled = false;
        UnityEngine.Analytics.Analytics.deviceStatsEnabled = false;
        UnityEngine.Analytics.Analytics.limitUserTracking = true;
#if UNITY_2018_3_OR_NEWER
        UnityEngine.Analytics.Analytics.initializeOnStartup = false;
#endif
    }
}

※このコードは RuntimeInitializeOnLoadMethod() で呼んでいるのでシーンに配置されていなくても、プロジェクトに含まれているだけで動作します。

 

RuntimeInitializeOnLoadMethod() について詳しく知りたい方はこちらの記事などを参照下さい。

tsubakit1.hateblo.jp

なお、昔の Unity では deviceStatsEnabled (エディタ上の Disable HW Statistics に対応。フラグは逆ですが(^_^;)) は有料ユーザしか無効に出来ませんでしたが Unity 2018.3 からは無料ユーザも無効に出来るようになりました。

 

Unity 2018.3 よりも前のバージョンを使用している無料ユーザの方はバージョンアップか有料ユーザへの変更を検討下さい。

 

送信が止まっている事を確認する方法

確認についてはパケットキャプチャをするのが一番確実です。パケットの中に unity3d.com に向けて送信されているものが無くなっていれば送信が止まっています。

iOS/Android でのパケットキャプチャ方法の一例をあげておきます。

 

iOS/Android 共通

qiita.com

iOS

(英語)Apple公式の記事。

developer.apple.com

日本語の解説記事。

qiita.com

Android

 Google Play には沢山のパケットキャプチャアプリが有りますが今回のチェックには SSL(https) に対応しているアプリが必要です。例えば以下のアプリなどが対応しています。

play.google.com

実際に使用するには気をつける部分が有るのでちゃんとマニュアル(英語)の GetStartedをしっかりと読んでから使いましょう。

こちらはオープンソースのアプリでソースコードこちらから取得できます。