2014-10-30 119 views
0

我正在創建一個應用程序,可以在有限的時間內向用戶解鎖功能。高級功能讓我們打電話給他們。他們可以購買一個月,6個月或一年的訂閱。這些訂閱將不會續訂。經過大量的網絡搜索和尋找非常不同的「解決方案」之後,我轉向了StackOverflow以尋求最好的解決方案。非續訂訂閱:回頭時間

購買訂閱時,結束日期會存儲在設備上,直到通過iCloud進行同步,因爲Apple希望您在所有設備上擁有此訂閱。該應用程序會檢查iCloud以查看當前訂閱是否仍然可用,併爲剩餘天數的用戶顯示精彩的倒計時。但是我目前遇到了一個問題。當用戶支付了一個月的時間,並將設備的日期更改爲一年前(或其他)時,它可以使用一年的訂閱。倒計時現在不顯示還剩23天,但389。

我該如何避免這種情況? 我應該檢查某個服務器以檢查實時和日期嗎? 如果用戶只在飛行模式下使用應用程序會怎麼樣?

Thx提前!

回答

0

您可以檢查標準的基於Web的時間服務器來執行此操作。由於我有我自己的服務器(作爲我的應用程序內購買機制的一部分),因此我只需要在服務器上向服務器詢問當前時間。每當應用程序啓動時,我都會這樣做,每次我都會進行服務器調用(通常是在應用程序內購買完成時)。然後我在本地存儲時間(無論是在KeyChain還是NSUserDefaults中,都不記得哪個!),並使用它(和設備時間,以後會及時)來計算購買到期日。

當然,這假定用戶在啓動應用程序時有網絡連接。雖然你只能做很多!

-1

其實發生什麼事後,你的InAppPurchase蘋果成功完成後會爲你提供一個交易收據......這個交易收據存儲在本地。當您想要檢查訂閱處於活動狀態還是過期時,您需要使用此事務處理請求請求storekit,然後商店工具包會爲您提供狀態..如果狀態爲0,那麼它處於活動狀態。如果狀態是21006,那麼您的交易已過期。如果你想繼續訂購另一個設備,那麼你需要恢復那裏的交易..完成恢復後,你將得到所有的產品ID和交易reciepts ..你需要在那裏存儲交易reciepts,你需要通過此storekit是否處於活動狀態或過期狀態..對不起,我可憐的英語..

+0

這是錯的。蘋果公司對於續訂時間/日期不知道任何關於續訂時間/日期的內容。實現這種非續訂訂閱機制取決於應用程序。 – 2015-03-03 15:20:09