Unity の Systeminfo.deviceUniqueIdentifier で取得できる値

シェアする

なんかイロイロあって調べてた。Unity で固有のIDを扱う際に Systeminfo.deviceUniqueIdentifier というのを使用するとソレっぽい値を取得できるのだけど、利用用途によっては罠にハマる。

この値は Unity のバージョン及び iOS のバージョン, 更には Android の端末毎に参照先の値が異なってくる。が、どうせ最新版しか使わないので現在のバージョンである 4.5 で取得できる値について記述すると以下のようになる。

OS 取得元の値
iOS7 advertisingIdentifier もしくは Vendor ID
iOS6 Mac Address
Android IMEI / MEID、ANDROID_ID or WiFi MAC Address

ここで様々な問題が出てくる。

Sponsored Links

iOS

iOS は IMEI ダメになったり UDID ダメになったり Mac アドレスダメになったりしたけど個人情報保護の為だ。

iOS の Vendor ID

identifierForVendor の事。iOS でベンダー毎に割り当てられる固有の番号で、同一ベンダーのアプリがインストールされていれば同じ値を取得できる。が、同一ベンダーのアプリを全て削除し、再度インストールすると値が変わってしまう。

なので再インストールした際に同一デバイスであるかの判別を行う、などはできない。

Android

相変わらず Android では IMEI も Mac Address も取得できるようだ。パーミッション表示すれば良いという事なんだろうか。それはともかく気をつけないと変な値を掴む事になる。

IMEI

当たり前だがタブレットなどでは取得できない。

Android ID

Android 端末をセットアップした際に生成されるユニークな値。ファクトリーリセットされたら変わる。Android4.2以上で複数ユーザで利用する場合もユーザ毎に違う値が設定される。

Settings.Secure | Android Developers

そしてある機種では全ての端末で同一の Android_ID を返す。ググって出てきたのが Galaxy S と Droid2 なので確認はできないが, そういう事もあるらしい。

Galaxy-S でANDROID_IDが全機種同じ - Google グループ

さらにいうと Android 2.2 まではバグがあったらしい。今どき 2.2 対応しないだろうから良いとは思いますが。

なので SystemInfo.deviceUniqueIdentifier を使うぐらいなら最初から Mac アドレスを取得しにいったほうが良いと思う。

Sponsored Link

シェアする

フォローする