3.8.2 可以获取到设备唯一ID吗

咨询一下大家,3.8.2 可以获取到设备唯一ID吗
获取不到的话,一般要怎么做这个唯一ID呢

1赞

android 的话 可以获取Google Play Services 的 Advertising ID 或者 Firebase 的 Instance ID 或者 MediaDrm.getPropertyString 或者Android ID或者可以自己生成个UUID保存 然后JSB通信 选个喜欢的 @xyxdasnjss


import com.google.android.gms.ads.identifier.AdvertisingIdClient;
import com.google.android.gms.ads.identifier.AdvertisingIdInfo;
 
public String getAdvertisingId(Context context) {
    try {
        AdvertisingIdInfo advertisingIdInfo = AdvertisingIdClient.getAdvertisingIdInfo(context);
        return advertisingIdInfo.getId();
    } catch (Exception e) {
        e.printStackTrace();
        return null;
    }
}
import com.google.firebase.iid.FirebaseInstanceId;
 
public String getFirebaseInstanceId(Context context) {
    return FirebaseInstanceId.getInstance().getId();
}
import android.media.MediaDrm;
 
public String getUniquePseudoId(Context context) {
    try {
        MediaDrm mediaDrm = new MediaDrm(MediaDrm.PROPRIETARY_WIDEVINE);
        byte[] widevineData = mediaDrm.getPropertyByteArray(MediaDrm.PROPERTY_DEVICE_UNIQUE_ID);
        String widevineId = new String(widevineData, "UTF-8");
        mediaDrm.release();
        return widevineId;
    } catch (Exception e) {
        e.printStackTrace();
        return "";
    }
}

import android.os.Build;
 
public class UniqueIdHelper {
    public static String getUniqueId() {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
            // 对于Android 10及以上版本
            String serial = Build.getSerial();
            if (serial != null && !serial.isEmpty()) {
                return serial;
            }
        }
        return Secure.getString(context.getContentResolver(), Secure.ANDROID_ID);
    }
}
3赞

好的,多谢大佬。

生成一个256位的随机数,你信不信它就是唯一的

https://docs.unity3d.com/cn/2022.3/ScriptReference/SystemInfo-deviceUniqueIdentifier.html
Unity是这样子的API,Cocos好像是没有相应的API,只能自己参考Unity这个自己实现了

自己实现的话,都要基于后面的 android 工程/ iOS 工程 / Win 工程。 :rofl: :rofl: :rofl:

android 国内 用移动安全联盟的oaid sdk 可以获得; ios 本来就有;自己写java代码和oc代码接入就可以了