【问题标题】:In App Purchase-Unlock Features应用内购买-解锁功能
【发布时间】:2011-05-13 03:10:25
【问题描述】:

嗨 我正在创建一个应用内购买 iphone 应用程序。我的应用程序已内置模型。它有一个包含 6 个项目的表格视图。在免费应用程序中有 3 个项目可用,我想锁定 3 个项目。人们只需进行一次 0.99 美元的交易即可解锁所有三件物品。

我想在我的应用程序中创建一个包含标志的 plist 文件。如果 flag=0 则锁定一些功能,如果 flag=1 则解锁所有功能。我的 plist 将只包含一个“标志”,可能是 0 或 1。

我不知道如何创建 plist 文件。我应该在哪里保存 plist 文件,以便客户无法访问它?我应该将它保存在资源文件夹中吗?

在 SKTransactionStatePurchased 之后,我想更改 .plist 文件中的标志。能否请您给我在 flag.plist 文件中将标志值从 0 更改为 1 的代码?

谢谢。

【问题讨论】:

    标签: iphone in-app-purchase


    【解决方案1】:

    我认为您应该寻找另一种方法来解决您的问题,原因如下:

    • 任何有权访问内部 iOS 文件系统的人都可以编辑 plist:这包括越狱者,并且某些工具也允许非越狱者访问它。
    • 使用代码编辑 plist 需要权限。您的应用程序仅在其 Documents 文件夹中具有编辑权限。也就是说,有人可以轻松地制作越狱应用来访问您应用的文档文件夹,从而相当轻松地编辑它的值。

    我很抱歉没有直接回答您的问题,但将这类内容存储在应用程序使用的文档中确实是个坏主意。我强烈建议您寻找替代方法来执行此操作(例如使用您自己的服务器)。

    【讨论】:

    • 嗯,我是个人而不是公司,我没有服务器或网站。我也不想为他们付钱。我知道还有其他几个人正在创建应用购买应用程序。如果他们不使用 plist 方法,他们正在使用什么方法?这样做的常用方法是什么?
    • 我自己进行了应用内购买,但我知道一些事情;人们使用自己的服务器,有时是的,他们在应用程序本身中进行“解锁”。不过,我不确定最后一种方法,因为所有可以设计的东西都可以逆向设计。如果我是你,我会考虑使用 NSUserDefaults,但总是使用某种描述。
    • (void)provideContent: (NSString *)productId { if ([productId isEqualToString:kInAppPurchaseProUpgradeProductId]) { [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"isProUpgradePurchased" ]; [[NSUserDefaults standardUserDefaults] 同步];如果我使用此代码,是否意味着我在 NSUserDefaults 中设置了一个标志“IsProUpgradePurchased”,购买的用户或越狱者无法访问和更改该标志。我需要一个服务器来实现 NSUserDefaults 吗?
    • 无需服务器即可使用 NSUserDefaults。这应该可以暂时解决问题。主要问题是它没有以任何方式加密。你现在在做什么比以前更安全,但只适用于未越狱的用户。您也可以考虑使用 iOS 钥匙串来存储某些令牌。
    【解决方案2】:

    真正回答你的问题:

    SKTransactionStatePurchased 后,调用

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults setInteger:1 forKey:@"yourKey"];
    [defaults synchronize];
    

    yourKey 可以是您自己选择的任何内容。可能是最好的 使用无意义和随机的词,这样黑客就不会 知道它与应用内购买有关。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-20
      相关资源
      最近更新 更多