gpt4 book ai didi

iphone - 将 iPhone 应用程序的投票限制在特定 iPhone 设备上

转载 作者:行者123 更新时间:2023-12-03 21:21:16 31 4
gpt4 key购买 nike

我正在开发一个 iPhone 客户端应用程序,它允许用户对各种服务进行评分。无需注册或登录。

要求是用户不能重复对服务进行评分(尽管可以更改其评分)。从目前的情况来看,该应用程序可以被删除、重新安装,并且用户可以再次投票。

我们考虑过使用设备 ID,但一位同事提到 Apple 建议不要这样做。如果我理解正确的话,万一手机被退回商店、重新发行,然后新用户下载了相同的应用程序。对我来说这似乎是一个非常边缘的情况,但我想可能会发生在企业内部。

是否有一种聪明的方法可以将投票限制在特定设备上?也许使用钥匙串(keychain)?

非常感谢任何指点。

最佳答案

请务必注意 UDID 和 UUID 之间的区别。

UDID“唯一设备ID”是特定于硬件的。对于特定设备,它永远不会改变。因此,它已成为隐私问题,苹果正在阻止尝试使用它的应用程序。因此,Apple 生成了一个可选择退出的“设备 ID”哈希值,特别是用于广告用途。这个新的 ID 哈希称为 IFA,可在 iOS 6.0+ 中使用。

UUID“通用唯一 ID”不是特定于硬件的。它是用于识别设备的哈希值;但不是特别绝对值。例如,PhoneGap根据设备属性生成UUID;这就是你执行 device.uuid 时得到的结果。如果您删除该应用程序并重新安装,您将获得一个新的 id 哈希值。 Apple 并未阻止 UUID。

我认为针对您的情况,最好的解决方案是使用 IFA,并使用 OpenUDID 作为 iOS < 6.0 的备份。

这是我们使用的代码。如果 IFA 不可用,请获取 OpenUDID。您必须安装 OpenUDID,请在此处了解更多信息,https://github.com/ylechelle/OpenUDID .

NSString* uuid = nil;
if ([[UIDevice currentDevice] respondsToSelector:@selector(identifierForVendor)]) {
// IOS 6 new Unique Identifier implementation, IFA
uuid = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
} else {
// Before iOS6 (or if IFA disabled) you shoud use a custom implementation for uuid
// Here I use OpenUDID (you have to import it into your project)
// https://github.com/ylechelle/OpenUDID
NSString* openUDID = [OpenUDID value];
uuid = [OpenUDID value];
}

关于iphone - 将 iPhone 应用程序的投票限制在特定 iPhone 设备上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4389710/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com