ios - 如何使用 DeviceCheck.DCDevice Xamarin Forms C# 生成令牌代码 iOS DeviceId
问题描述
我正在使用 Xamarin Forms,我需要来自 iOS 设备的设备 ID。当应用程序被删除并重新安装时,这种情况会发生变化。我需要设备的恒定设备 ID。
我被告知可以在 Xamarin 表单 iOS 中使用 DeviceCheck.DCDevice。这会通过 Apple 生成一个标识设备的令牌。有没有人可以遵循的代码示例来实现这一点?使用 DCDevice.GenerateToken ... C# iOS
解决方案
在 Xamarin 窗体 iOS 中使用 DeviceCheck.DCDevice。
if (DCDevice.CurrentDevice.Supported)
{
DCDeviceGenerateTokenCompletionHandler handler = (NSData token, NSError error) =>
{
// Upload token to App server
};
DCDevice.CurrentDevice.GenerateToken(handler);
}
DeviceCheck.DCDevice
据我了解,要在 Xamarin.iOS 中使用,DeviceCheck
不会提供类似的设备 ID,IdentifierForVendor
或者UUId
不会更改并始终代表该设备。请注意,DeviceCheck
仅在 iOS 11 以上可用。
您的应用程序使用 DeviceCheck API 生成用于标识设备的临时令牌。您的关联服务器将此令牌与您从 Apple 收到的身份验证密钥结合起来,并使用结果请求访问每个设备的位。
我认为识别设备的方法DeviceCheck.DCDevice
取决于您的应用程序的业务逻辑。
您可以阅读这篇文章(devicecheck-tutorial)以更好地了解 DeviceCheck 真正在做什么,然后达到您的要求。
这里还有一个 swift 示例,您可以参考:DeviceCheckSample
苹果文档:devicecheck
我正在使用 Xamarin Forms,我需要来自 iOS 设备的设备 ID。我需要设备的恒定设备 ID。
还有其他几个选项供您选择:
将您的设备 ID 存储在 中
Keychain
,它可能会在应用程序删除/重新安装后持续存在。如果您的应用有广告,您可以使用广告标识符来识别设备并将此数据发送到服务器以检查设备 ID。
推荐阅读
- c++ - 在运行时将更改的环境变量应用于 QApplication
- c++ - 使用 lambda 比较初始化优先级队列的方法
- javascript - MS SQL 在 NodeJS 中不返回数据
- java - 如何拆分一串 8 个数字并分别访问它们?
- python-3.x - 如何优化以避免使用过多的 'if' 'elif' 'else' 语句并有效降低圈复杂度?
- python - 将 python 代码实现为 cython 代码
- c# - 在两个 asp 核心 api 之间共享 Jwt 令牌
- json - 谷歌课堂 - 修改附件方法
- python-3.x - 如何在 Python 中获取对象字典表示
- c++ - 如何从子 B 创建子 A 并转换为父级?