0

我有一个具有消耗性 IAP 的应用程序。这是一个用户在一段时间内消费的 IAP,比如 IAP 有 100 个积分,而用户今天可能使用 10 个,明天使用 50 个,因此用户将剩下 100-10-50=40 个积分供以后使用。该应用程序会给出 100 的初始点数,让用户尝试一下。我使用 UserDefaults 来记录它,它工作正常,除了用户删除应用程序时 --- 当我测试两种方法时:1,删除并重新安装,我再次获得了最初的 100 分;2、我重新设置了iPhone语言,又得到了最初的100分。这意味着用户不会为了获得最初的 100 分而费尽心思,这基本上会阻止我的 IAP 销售。

我目前没有外部服务器来记录/验证 IAP。我不想要一个防弹机制来防止黑客攻击。我想要的只是可以在删除/重新安装后幸存下来的东西。在阅读stackoverflow页面后,我了解到1,钥匙串在删除/重新安装后仍然存在,2,它通常用于密码,3,一些开发人员使用它来存储IAP标志(是否购买了IAP),但是4,我不知道如果可以存储 NSNumber(上例中剩下的 40 个点)。我想知道钥匙串是否适合我的情况。

如果钥匙串可以存储 NSNumber,那么有人可以分享一些代码吗?谢谢。

密码箱更新:为什么我在 ViewController.o 中得到 Apple Mach-O-Linker 错误: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) {} 我得到了上面显示的错误。

4

1 回答 1

3

是的。

看看http://github.com/granoff/Lockbox。它正是为此而设的一个类,尽管您可能必须将其扩展为存储NSNumbers 或使用当前支持的数据类型之一,例如NSString.

于 2012-11-12T19:41:12.240 回答