2011-05-13 65 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可以是你自己選擇的任何東西。可能最好用 來爲它使用無意義和隨機的單詞,這樣黑客就不會知道它與應用程序購買有關。