精华内容
下载资源
问答
  • 设备标识符

    千次阅读 2017-01-10 17:51:33
    Android_Id,UUID,序列号,Mac Address,设备Id:

    设备Id:
    手机的唯一标识符,属于比较稳定的设备标识符。

    缺陷:
        非手机设备没有
        6.0以后需要权限,需要用户手动确认。
        在一些设备制造商的设备商,这个值不准备

    Mac Address
    通过检索设备的wifi或蓝牙硬件获取设备的Mac地址

    缺陷
        硬件限制:并不是所有的设备都有wifi和蓝牙硬件
        权限问题:需要wifistate权限和bluetooth权限
        系统限制:为了保护隐私,从android 6.0将不能获取到wifi和蓝牙有效的Mac地址

    序列号
    从Android2.3开始,可以获取设备的硬件序列号

    Sim Serial Number
    获取SIM卡的序列号

    缺陷
        设备限制:仅装有sim的设备才能获取到
        权限问题:调用该方法需要read_phone_state权限
        Bug;对cdma设备,返回的是一个空值

    Android_Id
    设备第一次启动时产生和存储的64-bit字符串

    缺陷:
        恢复出厂后可能会重置该值
        部分设备由于制造商错误实现,导致会返回相同的Android_id
        在Android4.2及以上,设备启动多用户功能后,每个用户的Android_id不相同

    UUID
    全局唯一标识符,是指在一台机器生成的数字,它保证对同一时空中的所有机器都是唯一的。

    缺陷:
        无法做到设备唯一
    //获取设备id
        public static synchronized String getDeviceID() {
    
            String deviceId = PreferenceUtils.getDeviceId();
            if (!TextUtils.isEmpty(deviceId)) {
                return deviceId;
            }
            String serial = serialNumber();
            String sep = "\t";
    
            if (serial == null) {
                serial = "";
            }
            serial = serial.trim();
    
            deviceId = MD5.hexdigest(androidID() + sep + serial);
    
            if (!TextUtils.isEmpty(deviceId)) {
                PreferenceUtils.saveDeviceId(deviceId);
            }
    
            return deviceId;
        }
        //获取Androidid
        private static String androidID() {
            return Settings.Secure.getString(AppProfile.getContext().getContentResolver(), Settings.Secure.ANDROID_ID);
        }
        //获取序列号
        private static String serialNumber() {
            return android.os.Build.SERIAL;
        }
        //获取手机imei
        private static String getPhoneIMEI(Context context) {
            TelephonyManager mTelephonyMgr = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
            String imei = mTelephonyMgr.getDeviceId();
            return imei;
        }
    
        //获取mac地址
        private static String getWifiMacAddress(Context context) {
            try {
                WifiManager wifi = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
                WifiInfo info = wifi.getConnectionInfo();//Caused by: java.lang.NullPointerException: name == null
                return info.getMacAddress();
            } catch (NullPointerException e) {
                return null;
            }
        }
    展开全文
  • Android匿名设备标识符OAID

    千次阅读 2020-11-16 17:02:14
    Android匿名设备标识符OAID ID说明 设备唯一标识符(UDID):设备唯一硬件标识,设备生产时根据特定的硬件信息生成,可用于设备的生产环境及合法性校验。不对第三方应用提供获取接口,无法通过 SDK 获取。 匿名设备...

    Android匿名设备标识符OAID

    ID说明

    • 设备唯一标识符(UDID):设备唯一硬件标识,设备生产时根据特定的硬件信息生成,可用于设备的生产环境及合法性校验。不对第三方应用提供获取接口,无法通过 SDK 获取。
    • 匿名设备标识符(OAID):可以连接所有应用数据的标识符,移动智能终端系统首次启动后立即生成,可用于广告业务。可以通过 SDK 获取到接口状态(重置、关闭)、ID 值。
    • 开发者匿名设备标识符(VAID):用于开放给开发者的设备标识符,可在应用安装时产生,可用于同一开发者不同应用之间的推荐。可以通过 SDK 获取到 ID 值。
    • 应用匿名设备标识符(AAID):第三方应用获取的匿名设备标识,可在应用安装时产生,可用于用户统计等。可以通过 SDK 获取到 ID 值。

    声明

    在这里插入图片描述

    下载链接

    移动安全联盟官网SDK 获取地址

    覆盖范围

    厂商名称支持版本
    华为HMS 2.6.2及以上
    小米MIUI10.2及以上版本
    vivoAndroid 9及以上版本
    oppoColor OS 7.0及以上版本
    LenovoZUI 11.4及以上版本
    三星Android 10版本
    魅族Android 10版本
    努比亚Android 10版本
    中兴Android 10版本
    华硕Android 10版本
    一加Android 10版本
    黑鲨Android 10版本
    摩托罗拉Android 10版本
    Freeme OSAndroid 10版本

    调用方法

    1. 把oaid_sdk_x.x.x.aar拷贝到项的libs目录,并设置依赖,其中x.x.x代表版本号。
    2. 将supplierconfig.json拷贝到项目assets目录下,并修改里边对应内容,特别是需要设置appid的部分。需要设置appid的部分需要去对应厂商的应用商店里注册自己的app。需要注意的是,其中label部分内容无需修改。
    3. 设置依赖implementation files(‘libs/oaid_sdk_x.x.x.aar’)
    4. 设置gradle编译选项,开发者可以根据自己对平台的选择进行合理配置
     ndk {
            abiFilters 'armeabi-v7a', 'x86', 'arm64-v8a', 'x86_64', 'armeabi'
        }
        packagingOptions {
            doNotStrip "*/armeabi-v7a/*.so" 
            doNotStrip "*/x86/*.so" 
            doNotStrip "*/arm64-v8a/*.so" 
            doNotStrip "*/x86_64/*.so"
            doNotStrip "armeabi.so"
        }
    
    1. 设置混淆
    -keep class XI.CA.XI.**{*;}
    -keep class XI.K0.XI.**{*;}
    -keep class XI.XI.K0.**{*;}
    -keep class XI.vs.K0.**{*;}
    -keep class XI.xo.XI.XI.**{*;}
    -keep class com.asus.msa.SupplementaryDID.**{*;}
    -keep class com.asus.msa.sdid.**{*;}
    -keep class com.bun.lib.**{*;}
    -keep class com.bun.miitmdid.**{*;}
    -keep class com.huawei.hms.ads.identifier.**{*;}
    -keep class com.samsung.android.deviceidservice.**{*;}
    -keep class org.json.**{*;}
    -keep public class com.netease.nis.sdkwrapper.Utils {public <methods>;}
    

    使用

    • 初始化
    public class APP extends Application {
        @Override
        protected void attachBaseContext(Context base) {
            super.attachBaseContext(base);
            JLibrary.InitEntry(base);
        }
    }
    
    • 设置回调
    public interface AppIdsUpdater {
            void OnValidId(@NonNull JSONObject ids);
    }
    
    • 设置调用类
    public class MiIdHelper implements IIdentifierListener {
        private boolean isSupport;
        private String oaid, vaid, aaid;
    
        public JSONObject getDeviceIds(Context cxt) {
            long startTime = System.currentTimeMillis();
            int code = CallFromReflect(cxt);
            long endTime = System.currentTimeMillis();
            long time = endTime - startTime;
            JSONObject jsonObject = new JSONObject();
            try {
                jsonObject.put("description", descriptionCode(code));
                jsonObject.put("code", code);
                jsonObject.put("time", time);
                jsonObject.put("isSupport", isSupport);
                jsonObject.put("oaid", oaid);
                jsonObject.put("vaid", vaid);
                jsonObject.put("aaid", aaid);
            } catch (Exception e) {
                e.printStackTrace();
            }
             return jsonObject;
        }
    
        private int CallFromReflect(Context cxt) {
            return MdidSdkHelper.InitSdk(cxt, true, this);
        }
    
    
        @Override
        public void OnSupport(boolean isSupport, IdSupplier _supplier) {
            this.isSupport = isSupport;
            if (_supplier != null) {
                this.oaid = _supplier.getOAID();
                this.vaid = _supplier.getVAID();
                this.aaid = _supplier.getAAID();
                _supplier.shutDown();
            }
        }
    
        private String descriptionCode(int code) {
            switch (code) {
                case ErrorCode.INIT_ERROR_DEVICE_NOSUPPORT:
                    return "DEVICE_NOSUPPORT";
                case ErrorCode.INIT_ERROR_LOAD_CONFIGFILE:
                    return "LOAD_CONFIGFILE";
                case ErrorCode.INIT_ERROR_MANUFACTURER_NOSUPPORT:
                    return "MANUFACTURER_NOSUPPORT";
                case ErrorCode.INIT_ERROR_RESULT_DELAY:
                    return "RESULT_DELAY";
                case ErrorCode.INIT_HELPER_CALL_ERROR:
                    return "HELPER_CALL_ERROR";
                default:
                    return "SUCCESS";
            }
        }
    }
    
    • 获取OAID
     MiIdHelper miIdHelper = new MiIdHelper(new AppIdsUpdater() {
                @Override
                public void OnValidId(@NonNull JSONObject ids) {
                    Log.e("OAID", ids.toString());
                }
            });
     miIdHelper.getDeviceIds(getApplicationContext());
    
    展开全文
  • 网络游戏-AV网络中设备标识符的设定方法.zip
  • HarmonyOS之深入解析设备标识符的功能和使用.pdf
  • 前言:一般在MMORPG游戏的开发过程中,会在新... 一、直接给出脚本 using UnityEngine; public class DeviceUtil { /// <summary>... /// 获取设备标识符 /// </summary> public static string Devic...

    前言:一般在MMORPG游戏的开发过程中,会在新注册或者登陆的时候,获取玩家设备标识符和设备型号。

    一、直接给出脚本

    using UnityEngine;
    
    public class DeviceUtil
    {
        /// <summary>
        /// 获取设备标识符
        /// </summary>
        public static string DeviceIdentifier
        {
            get
            {
                return SystemInfo.deviceUniqueIdentifier;
    
            }
        }
    
        /// <summary>
        /// 获取设备型号
        /// </summary>
        public static string DeviceModel
        {
            get
            {
    #if UNITY_IPHONE && !UNITY_EDITOR
                return Device.generation.ToString();;
    #else 
                return SystemInfo.deviceModel;
    #endif
            }
        }
    }
    
    

    其中,关于设备型号DeviceModel。如果是电脑或者安卓设备,使用SystemInfo.deviceModel就能得到设备型号。但是苹果不一样,所以需要利用宏,使用Device.generation.ToString()方法得到设备型号。

    展开全文
  • 设备标识符显示位置的小技巧

    千次阅读 2018-11-30 11:25:35
    在放置元件或者中断点时,可以先按下CTRL键调整好设备标识符显示的位置,再放置。 小圆弧显示的位置就是设备标识符显示的位置。

    在放置元件或者中断点时,可以先按下CTRL键调整好设备标识符显示的位置,再放置。

    小圆弧显示的位置就是设备标识符显示的位置。

    展开全文
  • Android匿名设备标识符OAID输出

    千次阅读 2020-03-20 12:35:30
    匿名设备标识符 OAID 输出 背景 随 着大数据和人工智能时代的到来,数据的价值也逐渐增加,移动终端设备标识码,如国际移动设备识别码(IMEI)、Wi-Fi MAC地址、SIM卡国际移动用户识别码(IMSI)和蓝牙地址等终端...
  • android平台Oaid匿名设备标识符的获取

    千次阅读 2020-02-19 15:02:56
    前言 2019年4月24日,移动安全联盟于深圳成功召开移动智能终端设备标识研讨会。下一步计划由头部设备厂商...以后逐渐要禁止获取IMEI,使用OAID(匿名设备标识符)来替代IMEI在app的作用(另外我们也可以获取VAID和AA...
  • 由于安卓平台的开放性和碎片化,对于我们获取唯一可靠的设备标识符带来了很大的困难,在本片文章中我们将介绍安卓平台下的,各种获取设备标识符的方式以及这些方式的利弊,那什么是设备标识符呢?简单说,设备标识符...
  • 最近,研究人员探讨了一种新的监控方案:将设备标识符与跟踪目标的生物特征信息结合起来,对在线用户进行描述和跟踪。研究来自利物浦大学,纽约大学,香港中文大学和布法罗大学的一组学者最新发表的题...
  • Android O 引入若干改进,帮助用户控制标识符的使用。这些改进包括: 限制使用不可重置的设备范围标识符 更新 Android O WLAN 堆栈,更改 Pixel、Pixel XL 和 Nexus 5x 手机所使用的 WLAN 芯片组固件...设备标识符...
  • 未知设备? 是一个小型实用程序,旨在为计算机技术人员提供一种简单的方法来识别在全新安装后出现在 Microsoft Windows 中的那些“未知设备设备。 该实用程序根据 GNU GPL2 许可证向公众授予许可,只要满足许可...
  • 获取设备的各种标识符,一句代码搞定。 NSString *idfvStr = [DYDeviceInfo dy_getDeviceIDFV]; 跳转Git下载, Github地址:https://github.com/DanielYK/DYDeviceInfo.git
  • iOS 设备标识符

    2013-11-26 14:20:20
    IOS系统中,获取设备唯一标识的方法有很多: 一.UDID(Unique Device Identifier)  UDID的全称是Unique Device Identifier,顾名思义,它就是苹果IOS设备的唯一识别码,它由40个字符的字母和数字组成。 二.UUID...
  • iOS_获取设备标识符

    2016-09-05 11:14:42
    UDID设备的唯一标识符,也就是设备的序列号,在iOS2.0版本中UIDevice提供了一个获取设备唯一标识符的方法uniqueldentifier,这个方法也是为一个可以确认获取此标识符的方法。但是,这个方法已被废弃,同时,苹果也不...
  • 获取Android设备标识符

    2016-03-26 15:00:00
    Android开发中有时候因业务需要客户端要产生一个唯一的标识符使服务器能识别某台Android设备,目前一般使用三种标识符分别为DeviceId、AndroidId、MAC地址。 获取DeviceId 在获取deviceId之前先要要AndroidManifest...
  • 设备标识符 uuid udid

    2017-05-27 15:06:32
    在开发过程中,我们经常会被要求获取每个设备的唯一标示,以便后台做相应的处理。我们来看看有哪些方法来获取设备的唯一标示,然后再分析下这些方法的利弊。  具体可以分为如下几种:  1、UUID  2、IDFA  3...
  • iOS - 获取设备标识符UUID/UDID/IMEI等

    万次阅读 2017-04-01 12:11:52
    关于获取设备各种标识符,最近整理了一下。基本上有IDFA、IDFV、IMEI、IMSI、UUID、UDID、MAC地址; 想要获取系统唯一标识符的话,比如说不管用户卸载还是重新安装都可以唯一标识的可以直接滑动到底部查看先将各种...
  • 获取唯一设备标识符

    2015-02-06 15:55:11
    Cocos2dx下,包含头文件 std::string uid = ""; uuid_t uu; int i; uuid_generate(uu); for (i = 0; i ; i ++) { char aa[10]=""; sprintf(aa, "%02X",uu[i]); uid+=aa;
  • 设备ID(DeviceId) 获取办法 1 android.telephony.TelephonyManager tm = (android.telephony.TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); 2 String deviceId = tm....
  • 获取一台设备唯⼀标识的方法有哪些?
 现在MAC地址,udid,广告标识都已经废弃,无法再用了. NSString *identifierForVendor = [[UIDevice currentDevice].identifierForVendor UUIDString]; NSString *...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 92,624
精华内容 37,049
关键字:

设备标识符