2012-06-12 94 views
2

我有幾個問題,這將有助於我瞭解的東西更好,如果回答:iOS的自動再生訂閱 - 問題有關更新過程

  1. 有沒有辦法一個新的訂閱和更新區分以前購買的?

  2. 訂閱是否在expires_date命中後立即通過續訂過程?似乎有時(至少在Sandbox中)我的訂閱將在expires_date之前更新30-60秒。

  3. 更新是否在expires_date命中後始終在一致的時間發生?例如,如果我啓動我的應用並且expires_date已過,那麼續訂何時會發生(假設用戶沒有取消)?或者說,我的應用程序什麼時候纔會知道蘋果公司的續約問題已經發生?

  4. 情景:應用程序已啓動,並且expires_date已通過我的訂閱之一。我是否應該向蘋果發送收據以查看訂閱是否已續訂,或者我應該等待幾秒鐘以查看續訂過程是否發生?

謝謝!

回答

4

我將嘗試回答我的問題:

  1. 要做到這一點,我店訂購的expires_dateNSUserDefaults一旦最初的購買完成。訂閱到期時,我從NSUserDefaults中刪除該對象。這使我能夠確定是否有後續的訂閱是一個更新expires_date存在於NSUserDefaults的 - 更新完成後,新的expires_date更新)或新購買expires_date不存在,可能是因爲它是在以前的訂閱到期刪除或者該產品從未被購買過)。

  2. 這個問題是無關緊要的 - 我所做的就是每當應用程序進入前臺時,將NSUserDefaults中存儲的expires_datecurrent_date進行比較。如果current_date已通過expires_date,我打電話給我的服務器以驗證與Apple的收據。 Apple將訂閱的狀態返回給我的服務器(0表示訂閱有效,21006表示它已過期,而其他所有內容對於我的應用而言都是微不足道的),服務器將其轉發給我的應用。以這種方式,我的應用需要多長時間才能得到續約提醒(也就是說,訂閱已經通過Apple在技術上已經更新,但我的應用還不知道),因爲我確定訂閱是否已過期或不。

  3. 在沙盒中,續訂似乎是非常不值得信任的。有時我的訂閱會續訂五次或六次(the standard, according to Apple),有時一次,有時甚至根本不會。爲了記錄,7天訂閱不會比30天訂閱更頻繁地更新。在沙箱中具有與在服務器上相同的可靠性是很好的,所以我可以相應地編寫代碼(並且減輕壓力),但我離題了。我發現讓訂閱提醒我的應用程序他們已經更新的唯一可靠且一致的方式是當expires_date has passed && I force close/relaunch my app。有時在背景和前景狀態之間進行切換是有效的,但根據我的經驗,這種方式的可靠性要低得多 - 但我有一種感覺,這種方式在實時服務器中會更好。

  4. 當我注意到expires_date已過時,我所做的是檢查我的服務器(然後與Apple進行檢查)。因此,更新是在/之前/之後發生並不重要,因爲我的服務器告訴我確定訂閱的狀態。

我希望這些信息可以幫助那些有我同樣問題的人!