Posted at

UnityでUUIDを生成する方法と、iOSからみる端末固有IDの考察


UnityでUUIDを生成する方法

string GetUUID()

{
var guid = System.Guid.NewGuid();
return guid.ToString();
}


端末固有IDの考察


そもそもなぜ必要か


  1. 複数のアプリ間で特定のユーザーを追跡したい場合 (広告などの用途)

  2. アプリの再インストール時にユーザー情報を復元したい場合


端末固有IDに関するiOSの動向

端末固有IDはユーザーが自由に変更できるものでないため、現在は非推奨という形になっています。(バージョンによりますが、該当メソッドを呼び出しているとリジェクトされるか、後述する代替メソッドの結果が帰ってきます)

iOS6.0以降で代替メソッドとして以下の2つが実装されているようです。



  • identifierForVendor


    • 開発者が同一であれば、同一の端末固有IDが返ってきます




  • AdvertisingIdentifier


    • 開発者に関わらず、同一の端末固有IDが返ってきます

    • ユーザーが取得の可否を設定可能(恐らくデフォルトで不可)

    • ユーザーが任意のタイミングでリセット可能



fasdfasdfasdf.png

iOS 12では、設定アプリから[プライバシー]>[広告]と進んでいくと上記の画面になりました。


UnityのSystemInfo.deviceUniqueIdentifierについて


  • ドキュメントにはデバイス固有のIDが返ってくると書いてある


    • iOSの場合、内部的にはidentifierForVendorを呼んでいる



  • UnityのバージョンやiOSのバージョンによって結果が異なる場合がある


    • 詳しくはドキュメントを参照




考察


1.複数のアプリ間で特定のユーザーを追跡したい場合 (広告などの用途)


基本的に推奨されていない流れだが、AdvertisingIdentifierで追跡可能なユーザーのみ追跡するという選択肢はありそう。


2.アプリの再インストール時にユーザー情報を復元したい場合


identifierForVendorを使えば実現可能だが、Androidではそういった仕組みが恐らくないことに注意が必要。アカウントを用いたユーザーデータの復元が現実的かと思います。


参考

【Unity】Unity上でUUIDを作る - Matt02's Note

http://matt02.hatenablog.com/entry/2014/07/26/023635

Unity - Scripting API: SystemInfo.deviceUniqueIdentifier

https://docs.unity3d.com/ScriptReference/SystemInfo-deviceUniqueIdentifier.html

《必見》Unity任せの機種固有ID取得は危険!-Unityアプリの効果計測 | マーケティングを支援するDigital Cloud Platform

https://admage.jp/blog_008_unity-apprication.html

iOS/Androidで端末を識別するIDまとめ | 株式会社アイリッジ

https://iridge.jp/blog/201404/4836/