做局域网网站,2345网址导航官网官方电脑版下载,海关网站建设方案,视频制作公司排行Unity 之 获取手机#xff1a;OAID、IMEI、ClientId、GUID 前言一、Oaid 介绍1.1 Oaid 说明1.2 移动安全联盟(MSA) 二、站在巨人的肩膀上2.1 本文实现参考2.2 本文实现效果2.3 本文相关插件 三、Unity 中获取Oaid3.1 查看实现源码3.2 工程配置3.3 代码实现3.4 场景搭建 四、总… Unity 之 获取手机OAID、IMEI、ClientId、GUID 前言一、Oaid 介绍1.1 Oaid 说明1.2 移动安全联盟(MSA) 二、站在巨人的肩膀上2.1 本文实现参考2.2 本文实现效果2.3 本文相关插件 三、Unity 中获取Oaid3.1 查看实现源码3.2 工程配置3.3 代码实现3.4 场景搭建 四、总结 前言
在当今的移动互联网时代OaidOpen Anonymous ID成为了广告投放和用户分析的重要工具。对于 Unity 游戏开发者来说获取安卓手机的 Oaid 可以帮助他们更好地了解用户行为、优化广告投放效果并提供个性化的游戏体验。
我了解到Oaid还是在TapADN中TapADN中提到Oaid可以提供更高收益
本文将介绍如何在 Unity 中获取安卓手机的 Oaid。 一、Oaid 介绍
1.1 Oaid 说明
Oaid 是一种匿名设备标识符用于标识移动设备。它与 IMEI 等设备标识符不同Oaid 不会泄露用户的真实身份信息同时也能满足广告投放和用户分析的需求。通过获取 Oaid开发者可以了解用户的设备信息、地理位置、兴趣爱好等从而为用户提供更加精准的广告投放和个性化的服务。
在 Android 10 版本中广告渠道商们作为非厂商系统应用将无法获取 IMEI、MAC 等设备信息。旧版本的手机系统在用户手动升级前将保持不变但是搭载 Android 10 系统的手机系统将不支持获取 IMEI。在一段时间内将处于新旧版手机系统共存的状态但是新版手机系统的用户占比将会逐渐提高会造成新版系统用户无法进行推广渠道的匹配。 1.2 移动安全联盟(MSA)
(MSA)移动安全联盟针对该问题联合国内手机厂商推出补充设备标准体系方案选择 OAID 字段作为 IMEI 等的替代字段 。广告渠道商选择 OAID 作为 IMEI 的替代字段。OAID 字段是由中国信通院联合华为、小米、OPPO、VIVO 等厂商共同推出的设备识别字段具有一定的权威性。OAID 的准确性和覆盖率均满足广告场景的使用需求。
关于 OAID 更多信息可参考 MSA移动安全联盟官网: http://www.msa-alliance.cn/col.jsp?id120
我注册并下载了MAD的SDK看了开发说明文档感觉集成操作有点复杂。进而有了本文的实现方式 二、站在巨人的肩膀上
2.1 本文实现参考
查到了相关的实现方式【膜拜大佬】
参考链接
Unity Android获取OAID码Android_CN_OAID 2.2 本文实现效果
下图1是本文最终的实现效果图2图3是1.3中大佬提供的apk的测试结果参照
2.3 本文相关插件
在文章开头的资源绑定中有源码和本文使用的最新library-4.2.8.aar包下载地址使用是可打开看下是否有新的。
开头提供的资源包内容 三、Unity 中获取Oaid
3.1 查看实现源码
在 Unity 中可以通过调用插件提供的接口来获取 Oaid。具体的获取方法可以参考DeviceIdentifier.java类代码。 一般来说需要在游戏启动时获取 Oaid并将其存储在本地以便后续使用。 3.2 工程配置
在Project Setting→Player→安卓→Publishing Settings→Build 下勾选如下图所示三项此时工程会自动生成左侧框到三个文件 3.3 代码实现
在settingsTemplate.gradle添加以下内容粘贴两次位置如图所示。
maven { url https://developer.huawei.com/repo/ }
maven { url https://developer.hihonor.com/repo }新建JAVA代码
package com.GetOaid;import android.app.Application;
import android.app.Activity;import com.unity3d.player.UnityPlayer;import com.github.gzuliyujiang.oaid.DeviceIdentifier;
import com.github.gzuliyujiang.oaid.IRegisterCallback;public class OaidWrapper
{private Application application;public void register(){application UnityPlayer.currentActivity.getApplication();DeviceIdentifier.register(application, false, new IRegisterCallback() {Overridepublic void onComplete(String clientId, Exception error) {// do somethingUnityPlayer.UnitySendMessage(GetOaidSDK, GetClientIdComplete, clientId);}});}public String getOAID(){UnityPlayer.UnitySendMessage(GetOaidSDK, ShowMsg, DeviceIdentifier.getOAID(application));return DeviceIdentifier.getOAID(application);}public String getIMEI() {UnityPlayer.UnitySendMessage(GetOaidSDK, ShowMsg, DeviceIdentifier.getIMEI(application));return DeviceIdentifier.getIMEI(application);}public String getClientId() {UnityPlayer.UnitySendMessage(GetOaidSDK, ShowMsg, DeviceIdentifier.getClientId());return DeviceIdentifier.getClientId();}public String getGUID() {UnityPlayer.UnitySendMessage(GetOaidSDK, ShowMsg, DeviceIdentifier.getGUID(application));return DeviceIdentifier.getGUID(application);}
}3.4 场景搭建
创建两个Text展示获取到的信息为了方便调试。在创建四个按钮用于测试主动获取OAID、IMEI、ClientId、GUID。新建GetOaidSDK的物体挂载代码
新建测试代码
需要将3.3中代码挂载到名为GetOaidSDK的物体上。jo new AndroidJavaObject(com.GetOaid.OaidWrapper); 要和上面创建的java文件中的包名和类名对应上
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Android;
using UnityEngine.UI;public class GetOaidDemo : MonoBehaviour
{public Text oaidText;public Text megText;public Button getOaidBtn;public Button getIMEIBtn;public Button getClientIdBtn;public Button getGUIDBtn;public Button getOAIDAAIDBtn;private static AndroidJavaObject jo;// 读取设备信息 权限private string READ_PHONE_STATE android.permission.READ_PHONE_STATE;void Start(){getOaidBtn.onClick.AddListener(OnClickGetOAID);getIMEIBtn.onClick.AddListener(OnClickGetIMEI);getClientIdBtn.onClick.AddListener(OnClickGetClientId);getGUIDBtn.onClick.AddListener(OnClickGetGUID);getOAIDAAIDBtn.onClick.AddListener(OnClickGetOAIDAAID);// 请求READ_PHONE_STATE权限RequestAndCheckPermission();}public void RequestAndCheckPermission(){Debug.Log(检查请求权限);if (!Permission.HasUserAuthorizedPermission(READ_PHONE_STATE)){Permission.RequestUserPermission(READ_PHONE_STATE);// 开始协程等待权限变化StartCoroutine(WaitForPermission(READ_PHONE_STATE));}else{// 权限已授予执行操作Debug.Log(权限已授予执行相关操作);Register();}}IEnumerator WaitForPermission(string permission){float timeWaited 0f;const float timeout 10f; // 设置超时时间防止无限等待while (!Permission.HasUserAuthorizedPermission(permission) timeWaited timeout){yield return new WaitForSeconds(0.2f); // 暂停并检查权限状态timeWaited 0.2f;}if (Permission.HasUserAuthorizedPermission(permission)){Debug.Log($Permission {permission} granted after waiting.);// 在这里处理权限被授予的逻辑ShowMsg(这里可以执行需要该权限的操作.);}else{Debug.LogWarning($Permission {permission} not granted after waiting.);// 处理权限请求超时或被拒绝的情况ShowMsg($处理权限请求超时或被拒绝的情况.);}}public void Register(){if (Application.platform RuntimePlatform.Android){jo new AndroidJavaObject(com.GetOaid.OaidWrapper);jo.Call(register);}}// 渠道clientId 自动获取oaidpublic void GetClientIdComplete(string clientId){oaidText.text clientId: clientId;OnClickGetOAID();}public void OnClickGetOAID(){oaidText.text 取Oaid;if (Application.platform RuntimePlatform.Android){jo new AndroidJavaObject(com.GetOaid.OaidWrapper);string oaidStr jo.Callstring(getOAID);oaidText.text oaidStr;Debug.Log(取Oaid: oaidStr);}}public void OnClickGetOAIDAAID(){oaidText.text getOAIDAAID;if (Application.platform RuntimePlatform.Android){jo new AndroidJavaObject(com.GetOaid.OaidWrapper);string oaidStr jo.Callstring(getOAIDAAID);oaidText.text oaidStr;Debug.Log(getOAIDAAID: oaidStr);}}public void OnClickGetIMEI(){oaidText.text getIMEI;if (Application.platform RuntimePlatform.Android){jo new AndroidJavaObject(com.GetOaid.OaidWrapper);string oaidStr jo.Callstring(getIMEI);oaidText.text oaidStr;Debug.Log(getIMEI: oaidStr);}}public void OnClickGetClientId(){oaidText.text getClientId;if (Application.platform RuntimePlatform.Android){jo new AndroidJavaObject(com.GetOaid.OaidWrapper);string oaidStr jo.Callstring(getClientId);oaidText.text oaidStr;Debug.Log(getClientId: oaidStr);}}public void OnClickGetGUID(){oaidText.text getGUID;if (Application.platform RuntimePlatform.Android){jo new AndroidJavaObject(com.GetOaid.OaidWrapper);string oaidStr jo.Callstring(getGUID);oaidText.text oaidStr;Debug.Log(getGUID: oaidStr);}}public void ShowMsg(string msg){megText.text \n msg;Debug.Log(msg: msg);}
}四、总结
在获取和使用 Oaid 时需要遵守相关的法律法规和隐私政策。不得将 Oaid 用于非法用途不得泄露用户的隐私信息。
获取安卓手机的 Oaid 对于 Unity 游戏开发者来说具有重要的意义。通过获取 Oaid开发者可以更好地了解用户行为、优化广告投放效果并提供个性化的游戏体验。在获取 Oaid 时需要遵守相关规定确保获取的 Oaid 准确性并及时更新 Oaid。希望本文对 Unity 游戏开发者有所帮助。 文章转载自: http://www.morning.mfbcs.cn.gov.cn.mfbcs.cn http://www.morning.bksbx.cn.gov.cn.bksbx.cn http://www.morning.zlnyk.cn.gov.cn.zlnyk.cn http://www.morning.lqznq.cn.gov.cn.lqznq.cn http://www.morning.xnkb.cn.gov.cn.xnkb.cn http://www.morning.qqnp.cn.gov.cn.qqnp.cn http://www.morning.drggr.cn.gov.cn.drggr.cn http://www.morning.cdygl.com.gov.cn.cdygl.com http://www.morning.kyjpg.cn.gov.cn.kyjpg.cn http://www.morning.hpxxq.cn.gov.cn.hpxxq.cn http://www.morning.hrzymy.com.gov.cn.hrzymy.com http://www.morning.hqwxm.cn.gov.cn.hqwxm.cn http://www.morning.jwgmx.cn.gov.cn.jwgmx.cn http://www.morning.hbtarq.com.gov.cn.hbtarq.com http://www.morning.rksnk.cn.gov.cn.rksnk.cn http://www.morning.pbksb.cn.gov.cn.pbksb.cn http://www.morning.rpkl.cn.gov.cn.rpkl.cn http://www.morning.qnzk.cn.gov.cn.qnzk.cn http://www.morning.mbmh.cn.gov.cn.mbmh.cn http://www.morning.tqxtx.cn.gov.cn.tqxtx.cn http://www.morning.bdzps.cn.gov.cn.bdzps.cn http://www.morning.tjsxx.cn.gov.cn.tjsxx.cn http://www.morning.zyrcf.cn.gov.cn.zyrcf.cn http://www.morning.qynpw.cn.gov.cn.qynpw.cn http://www.morning.hilmwmu.cn.gov.cn.hilmwmu.cn http://www.morning.rnzgf.cn.gov.cn.rnzgf.cn http://www.morning.krhkb.cn.gov.cn.krhkb.cn http://www.morning.tbjtp.cn.gov.cn.tbjtp.cn http://www.morning.cmzgt.cn.gov.cn.cmzgt.cn http://www.morning.lwtld.cn.gov.cn.lwtld.cn http://www.morning.mspkz.cn.gov.cn.mspkz.cn http://www.morning.pxlpt.cn.gov.cn.pxlpt.cn http://www.morning.cyyhy.cn.gov.cn.cyyhy.cn http://www.morning.mxhcf.cn.gov.cn.mxhcf.cn http://www.morning.rzmkl.cn.gov.cn.rzmkl.cn http://www.morning.sggzr.cn.gov.cn.sggzr.cn http://www.morning.aswev.com.gov.cn.aswev.com http://www.morning.zybdj.cn.gov.cn.zybdj.cn http://www.morning.ntyks.cn.gov.cn.ntyks.cn http://www.morning.vehna.com.gov.cn.vehna.com http://www.morning.rnribht.cn.gov.cn.rnribht.cn http://www.morning.qglqb.cn.gov.cn.qglqb.cn http://www.morning.nmbbt.cn.gov.cn.nmbbt.cn http://www.morning.mqgqf.cn.gov.cn.mqgqf.cn http://www.morning.skpdg.cn.gov.cn.skpdg.cn http://www.morning.qwgct.cn.gov.cn.qwgct.cn http://www.morning.pjtnk.cn.gov.cn.pjtnk.cn http://www.morning.dbphz.cn.gov.cn.dbphz.cn http://www.morning.xqjrg.cn.gov.cn.xqjrg.cn http://www.morning.qrndh.cn.gov.cn.qrndh.cn http://www.morning.azxey.cn.gov.cn.azxey.cn http://www.morning.lhrxq.cn.gov.cn.lhrxq.cn http://www.morning.jjzxn.cn.gov.cn.jjzxn.cn http://www.morning.qqhmg.cn.gov.cn.qqhmg.cn http://www.morning.xwbld.cn.gov.cn.xwbld.cn http://www.morning.lczxm.cn.gov.cn.lczxm.cn http://www.morning.bqdgr.cn.gov.cn.bqdgr.cn http://www.morning.byshd.cn.gov.cn.byshd.cn http://www.morning.dgfpp.cn.gov.cn.dgfpp.cn http://www.morning.kbdjn.cn.gov.cn.kbdjn.cn http://www.morning.dnmwl.cn.gov.cn.dnmwl.cn http://www.morning.lxlzm.cn.gov.cn.lxlzm.cn http://www.morning.kybjr.cn.gov.cn.kybjr.cn http://www.morning.mtjwp.cn.gov.cn.mtjwp.cn http://www.morning.xcxj.cn.gov.cn.xcxj.cn http://www.morning.splcc.cn.gov.cn.splcc.cn http://www.morning.zdzgf.cn.gov.cn.zdzgf.cn http://www.morning.xdwcg.cn.gov.cn.xdwcg.cn http://www.morning.rjjys.cn.gov.cn.rjjys.cn http://www.morning.ddxjr.cn.gov.cn.ddxjr.cn http://www.morning.nckzt.cn.gov.cn.nckzt.cn http://www.morning.brbmf.cn.gov.cn.brbmf.cn http://www.morning.pltbd.cn.gov.cn.pltbd.cn http://www.morning.pcwzb.cn.gov.cn.pcwzb.cn http://www.morning.yqfdl.cn.gov.cn.yqfdl.cn http://www.morning.rdwm.cn.gov.cn.rdwm.cn http://www.morning.ljygq.cn.gov.cn.ljygq.cn http://www.morning.sknbb.cn.gov.cn.sknbb.cn http://www.morning.bydpr.cn.gov.cn.bydpr.cn http://www.morning.3jiax.cn.gov.cn.3jiax.cn