我有一个具有消耗性 IAP 的应用程序。它是一个IAP,用户会随着时间的推移消耗它,比如IAP有100点,而用户可能今天用10点,明天用50点,所以用户会有100-10-50=40点留给以后使用。该应用程序给出了 100 的初始积分,让用户试用。我使用 UserDefaults 来记录它并且它工作正常,除了当用户删除应用程序时 --- 当我测试两种方法时:1,删除并重新安装,我再次获得了最初的 100 分; 2,我重新设置了iPhone语言,重新获得了最初的100分。这意味着用户不会为了获得最初的 100 分而费力,这基本上会阻止我的 IAP 销售。
我目前没有外部服务器来记录/验证 IAP。我不想要防弹机制来防止黑客攻击。我想要的只是可以在删除/重新安装后继续存在的东西。阅读 stackoverflow 页面后,我了解到 1,钥匙串(keychain)在删除/重新安装后仍然存在,2,它通常用于密码,3,一些开发人员用它来存储 IAP 标志(购买或不购买 IAP),但是 4,我不知道如果可以存储一个 NSNumber(上例中剩下的 40 个点)。我想知道 key 扣是否适合我的情况。
如果钥匙串(keychain)可以存储 NSNumber,有人可以分享一些代码吗?谢谢。
密码箱更新: 为什么我在 ViewController.o 中收到 Apple Mach-O-Linker Error: Objc-class-ref?与ARC有关的东西?我看到 Granoff(Lockbox 开发人员)说 ARC 已自动处理。我所做的是将 Lockbox.h 和 .m 文件添加到我的项目中并导入到我的应用程序中。然后应用程序由于错误而无法运行。但是,当我尝试 Lockbox 提供的示例项目时,它起作用了。有什么见解吗?谢谢。
我得到的密码箱错误:
Undefined symbols for architecture i386:
"_OBJC_CLASS_$_Lockbox", referenced from:
objc-class-ref in ViewController.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
我添加了“安全”框架。 添加安全框架后,我将 Lockbox.h 和 .m 文件复制到我的应用程序中。在我计划使用密码箱方法的 ViewController.m 文件中,我添加了“#import “Lockbox.h””。我可以在这一步运行,没有错误。 然后我添加了以下行: if ([Lockbox stringForKey:mylockboxstring] != nil) {} 我收到上面显示的错误。
最佳答案
是的。
看看http://github.com/granoff/Lockbox .这是一个专门用于此的类,尽管您可能必须扩展它以存储 NSNumber
或使用当前支持的数据类型之一,如 NSString
。
关于ios - ios Keychain 是否适合我的 IAP 问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13350301/