日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > ChatGpt >内容正文

ChatGpt

Unity中的设备唯一码GAID、IDFA,用于广告跟踪和数据统计

發(fā)布時間:2023/12/20 ChatGpt 100 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Unity中的设备唯一码GAID、IDFA,用于广告跟踪和数据统计 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

當前可以唯一標識設備,用于程序的數(shù)據(jù)收集和統(tǒng)計的ID

ANDROID:

國外:

GAID:廣告id,即Google Advertising ID(GAID),是由Google Play service提供給用戶的可以重置的唯一廣告id,通常也被用來作為設備的唯一標識,用于數(shù)據(jù)收集。但用戶手機上必須安裝有google play服務,并且網(wǎng)絡可以訪問google,才可以獲取到該id。(該廣告id也被稱為AAID —— Android Advertising ID)。由于可以被重置,因此是非永久性標識符

PS:這里的“重置”指的是在Android系統(tǒng)“設置”里,將Google服務將GAID重置,重置之后會生成一個新的GAID。卸載后重裝某個應用并不會改變GAID值,只有在系統(tǒng)設置中執(zhí)行指定操作后才會重置GAID。?GAID的作用在于對用戶喜好進行跟蹤,然后推送跟喜好相關的廣告。開啟或關閉該服務并不會減少廣告的數(shù)量,只是關閉之后推送的廣告是隨機選擇的,而不是根據(jù)用戶喜好來推送相關內(nèi)容的廣告。

重置GAID:? "Setting" -> "Ads"

? ??

如何獲取設備的GAID?

有兩種方式:

一種是直接在手機設置“Setting -> Ads”中查詢,如上圖所示。

但是對于國內(nèi)Android系統(tǒng)是沒有谷歌服務的,在重新安裝了Google三件套后依然無法在系統(tǒng)設置中找到“Google”或者“Ads”選項,此時是無法直接從手機設置中獲取到GAID的,需要借助第三方軟件才能查看到,這里推薦google play store 的“AAID”:

第二種則是通過代碼獲取:

?1.獲取當前設備的GAID以及廣告跟蹤狀態(tài):

string GetAdvertisingId() {string advertisingId = "DEFAULT";AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");AndroidJavaClass jc2 = new AndroidJavaClass("com.google.android.gms.ads.identifier.AdvertisingIdClient");AndroidJavaObject jo2 = jc2.CallStatic<AndroidJavaObject>("getAdvertisingIdInfo", jo);if (jo2 != null){//獲取廣告id:advertisingId = jo2.Call<string>("getId");if (string.IsNullOrEmpty(advertisingId))advertisingId = "none";//獲取廣告跟蹤狀態(tài):當為false時,則無法根據(jù)用戶行為定向推送廣告,但看到的廣告數(shù)量并不會減少adTrackLimited = jo2.Call<bool>("isLimitAdTrackingEnabled");}return advertisingId; }

運行結果如下:

PS:“isLimitAdTrackingEnabled”:是否限制跟蹤用戶行為以便投放相應廣告,當為false時則無法根據(jù)用戶行為來投放廣告,但看到的廣告數(shù)量不會減少。默認為false,表示可以會跟蹤用戶行為

注意:

1.如果只是為了獲取安卓設備的GAID,則并不需要導入任何其他插件,只用在custom后的 mainTemplate.gradle的依賴關系中添加:implementation 'com.google.android.gms:play-services-ads-identifier:18.0.1'? 即可

實際項目測試:使用Unity2018.4.1f1新建一個空項目,之后在Player Setting -> Publishing Setting中勾選“Custom Gradle Template”:

在新生成的文件“mainTemplate.gradle”中加入implementation 'com.google.android.gms:play-services-ads-identifier:18.0.1' 即可成功調(diào)用獲取GAID的方法,項目源碼:獲取安卓設備廣告id——GAID-Unity3D文檔類資源-CSDN下載

2.C#方法中用到的java類“com.google.android.gms.ads.identifier.AdvertisingIdClient”是在“com.google.android.gms:play-services-ads-identifier”中,而不是“com.google.android.gms:play-services-ads”,所以不要填錯依賴關系。

各個Google相關的信息與依賴關系可查閱官方Guide:https://developers.google.com/android/guides/setup

2.檢測當前設備Google Play服務是否可用?

//該方法已驗證,可以正常得到返回結果,用于獲取當前設備的google play服務狀態(tài)int CheckGooglePlayServiceAvailable() {AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");AndroidJavaClass jc2 = new AndroidJavaClass("com.google.android.gms.common.GoogleApiAvailability");AndroidJavaObject jo2 = jc2.CallStatic<AndroidJavaObject>("getInstance");int code = jo2.Call<int>("isGooglePlayServicesAvailable", jo);return code;// result codes from https://developers.google.com/android/reference/com/google/android/gms/common/ConnectionResult// 0 == success// 1 == service_missing// 2 == update service required// 3 == service disabled// 18 == service updating// 9 == service invalid }

注意:以上方法中用到的java類:“com.google.android.gms.common.GoogleApiAvailability”需要導入Google Play Games插件到項目中才可以正常被調(diào)用。

https://github.com/playgameservices/play-games-plugin-for-unity

項目實測:Unity2018.4.1f1,GooglePlayGamesPlugin-0.10.14.unitypackage

運行結果:

?項目源碼:獲取安卓設備的googleplayservice狀態(tài)以及GAID,和廣告跟蹤-Unity3D文檔類資源-CSDN下載

國內(nèi):

1.IMEI:可以唯一標識一個設備,并且無法重置,是運營商識別入網(wǎng)設備信息的代碼。世界上每一個IMEI都不相同。由于無法重置,因此是永久標識符。

由于IMEI具有唯一性和穩(wěn)定性,因此當前國內(nèi)大量使用的都是IMEI。但隨著安卓版本升級,到Android 10后,由于Google在隱私保護上的加強,Android Q已經(jīng)無法再獲取到設備的IMEI碼。

2.OAID:鑒于國內(nèi)的特殊環(huán)境,無法使用GAID,并且隨著安卓系統(tǒng)Android 10的普及,已經(jīng)無法再獲取到IMEI,所以近期由中國移動安全聯(lián)盟開發(fā)的OAID——Open Anonymous Device Identifier,具有穩(wěn)定性和唯一性,可以用來唯一標識設備。并且該ID還可以用于廣告跟蹤,可以被重置,所以通常也被用來替代國外的GAID,達到一樣的效果。但目前直到Android 10后才逐漸被使用,下圖為當前支持OAID的國內(nèi)終端:

IOS:

與之相對應的,在IOS設備上,該廣告id為“IDFA”,即Identifier For Advertising,是ios為每個用戶設置的唯一廣告id。由于IOS設備在國內(nèi)外都可以正常使用,因此IOS設備都使用IDFA來作為唯一標識。

Unity為IOS提供了獲取Advertising ID的方法:

//該方法當前尚沒有在IOS設備上得到直接驗證 Application.RequestAdvertisingIdentifierAsync((string advertisingId, bool trackingEnabled, string error) =>{ Debug.Log("advertisingId " + advertisingId + " " + trackingEnabled + " " + error); });

注:ATT窗口 —— 為了加強用戶隱私,IOS14推出ATT窗口:如因跟蹤目的收集用戶數(shù)據(jù),需先取得用戶授權才能得到該IOS設備的IDFA,否則應用獲取到的IDFA數(shù)據(jù)為空。

PS:

1.導入GoogleMobileAds???????插件后報錯(本項目并不需要導入該插件,之所以遇到該問題是因為在開發(fā)時恰好碰到了,所以記錄下):

導入谷歌廣告的Unity插件時,默認會使用當前最新的版本 —— GoogleMobileAds-v7.0.0.unitypackage。但對于Unity的早期版本如Unity2018.4.1f1是不支持package中有對Timeline的依賴關系的,所以Unity2018.4.1f1導入當前最新版的“GoogleMobileAds-v7.0.0.unitypackage”后會報錯:

解決辦法:更新Unity版本,如換成Unity2019即可;或者下載GoogleMobileAds的早期版本,如

經(jīng)測試,在Unity2018.4.1f1中導入“GoogleMobileAds-v3.18.3.unitypackage”后沒有如上報錯了

2.解析依賴失敗:在手動解析依賴時,點擊“Resolve”后沒有反應

?出現(xiàn)這種情況有可能是因為:當?shù)谝淮螌隚oogleMobileAds-v3.18.3.unitypackage插件后,Unity會自動的解析依賴關系,但由于時間過長,那個展示解析進度的窗口被人為打斷了。后面再次點擊“Resolve”是沒有反應的。此時查看“mainTemplate.gradle”發(fā)現(xiàn)沒有任何改變,依賴關系都沒有被添加進來,說明本次解析依賴沒有成功。

解決辦法:點擊截圖中的“Delete Resolved Libraries”,然后將項目關閉后再重新打開,再次點擊“Resolve”即會重新開始解析依賴。彈出如下窗口則代表解析依賴成功

總結

以上是生活随笔為你收集整理的Unity中的设备唯一码GAID、IDFA,用于广告跟踪和数据统计的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。