| API | 説明 | 戻り値 |
|---|---|---|
DeviceGetOaid |
デバイス OAID を取得(Android のみ) | OAID 元の値(- 除去、最大 32 文字) |
DeviceGetIdfa |
デバイス IDFA を取得(iOS のみ) | IDFA 元の値(- 除去、最大 32 文字) |
DeviceGetImei |
デバイス IMEI を取得 | IMEI 元の値(- 除去、最大 32 文字) |
DeviceUniqueIdentifier |
デバイス固有マシン ID を取得 | MD5 ハッシュ(32 文字の 16 進数文字列) |
すべての API は PlayerPrefs を通じて結果をキャッシュし、初回取得後はシステムインターフェースを再呼び出ししません。
以下のいずれかの方法を選択してください:
-
Unity プロジェクトの
Packages/manifest.jsonを編集し、scopedRegistriesセクションを追加してください:{ "scopedRegistries": [ { "name": "GameFrameX", "url": "https://gameframex.upm.alianblank.uk", "scopes": [ "com.gameframex" ] } ], "dependencies": { "com.gameframex.unity.systeminfo": "3.0.1" } }scopesは、どのパッケージをこのレジストリから解決するかを制御します。com.gameframexで始まるパッケージのみがこのレジストリから取得されます。 -
manifest.jsonのdependenciesに直接追加:{ "com.gameframex.unity.systeminfo": "https://github.com/gameframex/com.gameframex.unity.systeminfo.git" } -
Unity の Package Manager で Git URL を使用して追加:
https://github.com/gameframex/com.gameframex.unity.systeminfo.git -
リポジトリを Unity プロジェクトの
Packagesディレクトリにクローンしてください。自動的に読み込まれます.
以下のいずれかの方法を選択してください:
-
Unity プロジェクトの
Packages/manifest.jsonを編集し、scopedRegistriesセクションを追加してください:{ "scopedRegistries": [ { "name": "GameFrameX", "url": "https://gameframex.upm.alianblank.uk", "scopes": [ "com.gameframex" ] } ], "dependencies": { "com.gameframex.unity.systeminfo": "3.0.1" } }scopesは、どのパッケージをこのレジストリから解決するかを制御します。com.gameframexで始まるパッケージのみがこのレジストリから取得されます。 -
manifest.jsonのdependenciesに直接追加:{ "com.gameframex.unity.systeminfo": "https://github.com/gameframex/com.gameframex.unity.systeminfo.git" } -
Unity の Package Manager で Git URL を使用して追加:
https://github.com/gameframex/com.gameframex.unity.systeminfo.git -
リポジトリを Unity プロジェクトの
Packagesディレクトリにクローンしてください。自動的に読み込まれます.
| プラットフォーム | DeviceGetOaid |
DeviceGetIdfa |
DeviceGetImei |
DeviceUniqueIdentifier |
|---|---|---|---|---|
| Android | JNI リフレクション取得(MSA / Huawei / Xiaomi / OPPO / vivo / Samsung) | SystemInfo.deviceUniqueIdentifier(フォールバック) |
JNI による TelephonyManager 呼び出し |
IMEI + ハードウェア情報 + Android ID + WLAN MAC + BT MAC の MD5 |
| iOS | SystemInfo.deviceUniqueIdentifier(フォールバック) |
ASIdentifierManager.advertisingIdentifier |
native __DeviceGetIMEI() (IDFV) |
native DeviceUniqueId() (SSKeychain) |
| WebGL | jslib:localStorage に永続化された UUID |
jslib:localStorage に永続化された UUID |
jslib:localStorage に永続化された UUID |
jslib:localStorage に永続化された UUID |
| Editor / その他 | SystemInfo.deviceUniqueIdentifier |
SystemInfo.deviceUniqueIdentifier |
SystemInfo.deviceUniqueIdentifier |
SystemInfo.deviceUniqueIdentifier |
WebGL 補足:
SystemInfo.deviceUniqueIdentifierはブラウザコンテキストで不安定なため、jslib は初回呼び出し時に UUID を生成し、localStorageのGameFrameX.DeviceUniqueIdentifierキーに永続化することで、同じブラウザ内では安定します。
本プラグインは権限を一切要求しません。権限がない場合はグレースフルにフォールバックします。プラグインは AndroidManifest.xml を同梱していません。以下の権限は使用側プロジェクトの AndroidManifest.xml で必要に応じて宣言してください。
| 権限 | DeviceUniqueIdentifier の一意性向上 |
DeviceGetImei の一意性向上 |
|---|---|---|
READ_PHONE_STATE |
IMEI がハッシュ計算に含まれる | 実際の IMEI を取得可能 |
ACCESS_WIFI_STATE |
WLAN MAC がハッシュ計算に含まれる | - |
BLUETOOTH |
Bluetooth MAC がハッシュ計算に含まれる | - |
<!-- 使用側プロジェクトの AndroidManifest.xml に必要に応じて追加 -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.BLUETOOTH" />| 設定 | 目的 |
|---|---|
NSUserTrackingUsageDescription |
IDFA に必要な ATT 認証の説明 |
<!-- 使用側プロジェクトの Info.plist に追加 -->
<key>NSUserTrackingUsageDescription</key>
<string>広告識別子はより良いサービスの提供に使用されます</string>using GameFrameX.SystemInfo.Runtime;
// デバイス OAID を取得(Android のみ、iOS/Editor では SystemInfo.deviceUniqueIdentifier にフォールバック)
string oaid = BlankDeviceUniqueIdentifier.DeviceGetOaid;
// デバイス IDFA を取得(iOS のみ、Android/Editor では SystemInfo.deviceUniqueIdentifier にフォールバック)
string idfa = BlankDeviceUniqueIdentifier.DeviceGetIdfa;
// デバイス IMEI を取得
string imei = BlankDeviceUniqueIdentifier.DeviceGetImei;
// デバイス一意識別子を取得
string deviceId = BlankDeviceUniqueIdentifier.DeviceUniqueIdentifier;IDFA は ATT(App Tracking Transparency)によるユーザー認証が必要です。使用前に Info.plist に追加:
<key>NSUserTrackingUsageDescription</key>
<string>広告識別子はより良いサービスの提供に使用されます</string>DeviceGetIdfa を呼び出す前に認証を要求:
#if UNITY_IOS || UNITY_IPHONE
// iOS 14+ では先に ATT 認証を要求
if (UnityEngine.iOS.Device.systemVersion.CompareTo("14") >= 0)
{
UnityEngine.iOS.Device.RequestUserAuthorization(UnityEngine.iOS.UserTracking.Authorization);
}
#endif
string idfa = BlankDeviceUniqueIdentifier.DeviceGetIdfa;未認証の場合、DeviceGetIdfa は空文字列を返し、クラッシュしません。
Plugins/
iOS/
BlankDeviceUniqueIdentifier/
AHDeviceUniqueIdentifier.h # iOS native ヘッダ
AHDeviceUniqueIdentifier.mm # iOS native 実装
SSKeychain.h # SSKeychain キーチェーンユーティリティ
SSKeychain.m
WebGL/
BlankDeviceUniqueIdentifier.jslib # WebGL jslib ブリッジ(localStorage 永続化 UUID)
Runtime/
BlankDeviceUniqueIdentifier.cs # C# 統一インターフェース(Android は JNI でシステム API を直接呼び出し、Java/JAR 不要)
Android では
AndroidJavaClass/AndroidJavaObjectを使用してシステム API とベンダー SDK を直接呼び出します。Java コードのコンパイルや JAR ファイルは不要です。
| パッケージ | 説明 |
|---|---|
| (无) | - |
- QQグループ: 467608841 / 233840761
Releases で変更履歴を確認してください。
詳しくは LICENSE.md をご参照ください。
