環境:只適用於pc
一:遇到的坑
unity 提供了給我一套獲取硬體資訊的api 鏈結 蠻牛上的一篇帖子:鏈結
文中都提到了乙個獲取裝置的唯一識別符號
但是我可以明確告訴你 這個值會改變(過一段時間就會變 就是被他坑了)
檢視api文件
是根據主機板序列號.bios序列號.cpu資訊.硬碟序列號.作業系統資訊 來進行加密或者其他演算法得出的,也許是某個東西會隨著時間而改變 導致整個獲取的識別符號是會改變的(行不通 gg)
二:第二種方法還是坑
既然不能通過systeminfo來獲取識別符號 那麼就想著能不能用c#相關api來獲取,為此就找到一篇帖子:鏈結
然後在unity風風火火的copy**。。。。but~居然獲取不了 我真b了狗,起初我以為是我新增引入system.management不對,
因為新增的是unity下面的,以為是unity進行閹割了所以不能獲取
然後又在作業系統資料夾找的整個dll,最後發現還是不對,報錯顯示
猜想可能是mono虛擬機器不支援,咋辦呢?
三:解決方案
首先宣告整個解決方案有點不太爽。。。。
雖然unity不能 但是我們能用c#來獲取 於是乎 我就寫了乙個控制台程式 把獲取cpu序列號什麼的都寫進去,然後發現成功了
(再次證實unity mono不能獲取)
ojxk,然後我將獲取的寫入到了乙個文字,如下**:
class program
/// /// 獲取cpu硬體資訊
///
///
private static string getcpuid()
moc = null;
mc = null;
return cpuinfo;
}catch
finally
}/// /// 獲取硬碟id
///
///
private static string getdiskid()
moc = null;
mc = null;
return hdid;
}catch
finally}}
然後將這個控制台程式編譯的exe取出來
接著將整個exe放到unity的streamingasstens資料夾中
想到的思路是在unity啟動的時候 執行整個控制台程式 然後讀取生成的txt裡面的內容當作唯一識別符號
(這裡說明一下出現的問題 本來我是把那個控制台程式放在streamingasstes資料夾下面 想的是執行那個程式 能直接在streamingassets下面生產乙個txt檔案 結果發現不行 試了好幾種路徑 最後發現都會生產在發布後的exe同級資料夾路徑下面)
**:
using unityengine;
using sysdia = system.diagnostics;
void start()
else
} private ienumerator ieconfigpwd()
else
}
大概思路就是這樣了 我在這裡寫進了登錄檔 方便下一次啟動的時候我可以直接從登錄檔獲取整個值 就不用再次啟動那個控制台程式了,如果有其他的好方法記得告訴我 我也是技術有限才這樣搞~ 獲取唯一識別符號
ios 2.0版本以後uidevice提供乙個獲取裝置唯一識別符號的方法uniqueidentifier,通過該方法我們可以獲取裝置的序列號,這個也是目前為止唯一可以確認唯一的識別符號。但是,因為該唯一識別符號與手機一一對應,蘋果覺得可能會洩露使用者隱私,所以在ios 5.o之後該方法就被廢棄掉了。...
iOS獲取裝置唯一識別符號
在開發中會遇到應用需要記錄裝置標示,即使應用解除安裝後再安裝也可重新識別的情況,在這寫一種實現方式 讀取裝置的uuid universally unique identifier 並通過keychain記錄。首先儲存裝置的uuid,可以使用類方法 id uuid 是乙個類方法,呼叫該方法可以獲得乙個...
iOS唯一識別符號
在2013年3月21日蘋果已經通知開發者,從2013年5月1日起,替代的方案是開發者應該使用 在ios 6中介紹的vendor或advertising標示符 cfuuid方法用來建立cfuuidref,並且可以獲得乙個相應的nsstring,如下 cfuuidref cfuuid cfuuidcre...