2011-05-13 64 views
5

嗨 我正在创建一个inapp购买iPhone应用程序。我的应用程序已建立模型。它有一个有6个项目的桌子视图。在免费的应用程序中有3个项目可用,我想锁定3个项目。人们只需进行0.99美元的单笔交易即可解锁所有三项商品。In App Purchase-Unlock Features

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

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

SKTransactionStatePurchased后,我想要更改.plist文件中的标志。你能否给我一个将flag.plist文件中的标志值从0改为1的代码?

谢谢。

回答

2

我相信你应该寻找另一种方法来解决你的问题,一对夫妇的原因:

  • 的Plist可以由任何人谁有权访问内部的iOS文件系统编辑:这包括越狱并有一定的允许非破坏者也可以访问它的工具。
  • 用代码编辑plist需要权限。您的应用只在其文档文件夹中具有编辑权限。也就是说,有人可以很容易地让一个越狱应用程序访问您的应用程序的文档文件夹,以相当容易地编辑它的价值。

我对不直接回答你的问题表示歉意,但是在应用程序使用的文档中存储这样的东西实在是一个坏主意。我强烈建议你寻找替代方法来做到这一点(比如使用你自己的服务器)。

+0

嗯,我个人不是公司,我没有服务器或网站。我也不想为他们付钱。我知道还有其他几个人在应用程序购买应用程序中创建。如果他们不使用plist方法,他们正在使用什么方法?做这件事的常见方法是什么? – chits12345

+0

我haver自己做了一个应用程序内购买,但我知道一些事情;人们使用他们自己的服务器,有时是的,他们会让应用程序本身“解锁”。虽然我不确定最后一种方法,因为所有可以设计的东西都可以进行逆向设计。如果我是你,我会考虑使用NSUserDefaults,但总是使用某种描述。 –

+0

(无效)provideContent:(的NSString *)PRODUCTID { 如果(的[ProductID isEqualToString:kInAppPurchaseProUpgradeProductId]) { [[NSUserDefaults的standardUserDefaults] setBool:YES forKey:@ “isProUpgradePurchased”]; [[NSUserDefaults standardUserDefaults] synchronize]; } }如果我使用这段代码,是否意味着我在NSUserDefaults中设置了一个标志“IsProUpgradePurchased”,这个标志不能被正在购买的用户或者被破解者访问和更改。我需要一个服务器来实现NSUserDefaults吗? – chits12345

2

要真正回答你的问题:

SKTransactionStatePurchased后,只需拨打

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

yourKey可以是你自己选择的任何东西。可能最好用 来为它使用无意义和随机的单词,这样黑客就不会知道它与应用程序购买有关。