ios - ios Keychain 是否适合我的 IAP 问题?

标签 ios keychain in-app-purchase reinstall

我有一个具有消耗性 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/

相关文章:

ios - 如何重置 CABasicAnimation?

iOS AVPlayer 在播放图标上显示带有十字线的屏幕

objective-c - 如何从 KeyChain 获取代理主机的用户名?

ios - 沙盒自动续订订阅能否在应用程序重新安装后继续存在

iphone - iOS - 以编程方式调整 UITableView 高度

ios - iOS模拟器中的黑屏

ios - Xcode 代码签名错误,因为钥匙串(keychain)中没有 key

ios:将新密码添加到 iCloud 钥匙串(keychain)

iphone - 检测应用内购买的重复购买

iphone - SKPaymentTransaction.originalTransaction.transactionReceipt 为零