每当在设备上卸载和重新安装应用程序时,iOS设备的唯一持久标识符都会更改。出于隐私考虑,iOS对唯一持久标识符进行了严格限制。
我如何获得唯一的固定身份识别ID?
我正在尝试此代码,但在我卸载应用程序并重新安装后,我的唯一ID发生了变化。
var uuidKey = new NSString("myDeviceUUID");
string bundleId = NSBundle.MainBundle.BundleIdentifier;
string uuid = null;
if (UIDevice.CurrentDevice.CheckSystemVersion(6, 0))
{
uuid = UIDevice.CurrentDevice.IdentifierForVendor.AsString();
}
else
{
uuid = NSUserDefaults.StandardUserDefaults.StringForKey(uuidKey);
}
if (uuid == null)
{
uuid = Guid.NewGuid().ToString();
}
string uniqueId = $"{bundleId}-{uuid}";
NSUserDefaults.StandardUserDefaults.SetString(uuid, uuidKey);
Xamarin.Forms.Application.Current.Properties["DeviceId"] = uniqueId;
Xamarin.Forms.Application.Current.SavePropertiesAsync();
1条答案
按热度按时间aamkag611#
你可以通过使用iOS的钥匙链来实现这一点。
这是怎么回事我们将检查设备中是否存在带有我们密钥的现有钥匙链,在这种情况下,它将保存Apple提供的唯一供应商ID。如果存在,这意味着该应用程序之前已经安装在设备中,用户正在重新安装它。因此,我们从之前存储的钥匙串中获取唯一供应商ID。如果密钥不存在,这意味着该用户是第一次在设备中新安装应用程序,因此我们将唯一的供应商ID存储到密钥链中以供以后访问。
注意:如果卸载应用程序,则不会删除钥匙串数据。
在
AppDeletegate.cs
中添加此代码,并在FinishedLaunching
之前调用此方法。SecureStorage
是Xamarin.Essentials
封装。您可以使用依赖项服务来读取
UID
。在这里,Helpers.DeviceInfo.UID
是一个静态字符串,变量名为UID
,位于Xamarin.iOS
文件夹中Helpers
命名空间下的DeviceInfo
类中。希望这对你有帮助。