LoginSignup
8
4

More than 5 years have passed since last update.

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

Posted at

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/

8
4
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
8
4