2014-04-21 45 views
1

我需要設計一個使用In App Purchase的應用程序。 在這個應用程序中,我必須使用StoreKit(顯然!),我還想存儲購買應用程序的人員列表,並使用我自己的Web服務檢查它們。這是因爲一些越獄功能,它可以欺騙應用程序商店Check in App通過網絡服務購買

我所做的在下面談到:

1.如果用戶要使用特殊的功能,並沒有買它:

1.1首先,我檢查用戶默認值並檢查用戶是否購買了該功能。

1.2如果不是我給他/她的蘋果頁面商店,並要求他/她購買。

1.3確認後,我發送數據到我的網絡服務,並保存在用戶默認值。

2.如果用戶要使用特殊的功能,並已買了它:

2.1首先檢查是否有任何存儲在用戶默認

2.2如果沒有買給他/她頁店

2.3獲得後已經從商店購買的消息,我和我的web服務檢查,然後我讓用戶使用

2.4如果Web服務已經證實購消息功能並將其保存在用戶默認值中。

我在選擇適用於所有蘋果設備的唯一標識符方面存在問題。

+0

identifierForVendor應該正常工作 – ZeMoon

回答

4

您不需要識別設備,您需要驗證事務。用戶應該能夠在重新安裝和跨設備的情況下恢復購買。

In-App Purchase programming guide狀態 - 其中

堅持使用自己的服務器以某種憑證或標識符一起發送收據複印件到你的服務器,所以你 可以跟蹤收據屬於特定用戶。例如,讓用戶通過電子郵件或 用戶名和密碼向服務器標識自己。不要使用UIDevice的identifierForVendor屬性 -不能使用它來識別和恢復 由不同設備上的同一用戶所做的購買,因爲不同設備對此屬性具有不同的值 。

因此,一旦您有收據,您可以將其發送到Web服務。您可以使用共享密鑰或公鑰/私鑰對在收據上簽名,以便服務器可以對其進行驗證。

+0

我仍然不知道如何使用唯一標識符?蘋果的收據是唯一的標識符嗎? – aakpro

+0

來自iTunes商店的收據包含該交易的唯一標識符 - original_transaction_id - 請參閱https://developer.apple.com/library/ios/releasenotes/General/ValidateAppStoreReceipt/Chapters/ReceiptFields。HTML#// apple_ref/DOC/UID/TP40010573-CH106-SW1。如果你想進一步識別一個特定的用戶,那麼你需要問他們一個電子郵件地址或用戶名。 – Paulw11