2017-07-13 184 views
0

我有一個移動應用程序,其中iOS我正在測試TestFlight。iOS恢復購買在TestFlight

在我成功購買「非續約訂購」後,我希望在撥打Restore Purchases時看到購買歷史記錄。當我通過TestFlight應用程序進行購買時,我沒有看到任何歷史購買。

問題

這是正常的行爲,因爲這是一個測試環境,而購買並不真的存在嗎?或者,我應該期望看到歷史性的採購?

如果一個人看不到歷史購買,你會如何測試Restore Purchases

代碼:

this.iap.restorePurchases().then((purchases: any[]) => { 
     // purchases are empty 
    }); 

該產品獲得成功並返回該產品。

this.iap.getProducts(this.PRODUCT_IDS).then((products: any[]) => { 
    ... 
    }); 

ps。當我在AndroidrestorePurchases運行相同的代碼確實會返回歷史購買。

回答

1

如果您參考表1-2和In App Purchase Programming Guide中的相應文字,您將看到系統不會恢復不可續訂訂閱;您的應用程序有責任在您自己的服務器上跟蹤用戶的訂閱狀態。

  • 不可再生訂閱。不涉及提供情節內容的訂閱。例子包括訪問歷史照片數據庫或一組飛行地圖。您的應用程序有責任在用戶的所有設備上提供訂閱,並讓用戶恢復購買。當您的用戶在您的服務器上擁有一個帳戶時,通常會使用此產品類型,在恢復內容時,您可以使用該帳戶來識別它們。訂閱的到期時間和持續時間也留給您的應用程序(或您的服務器)來執行和執行。

因此你不會看到在恢復購買一個非更新訂閱,所以你看到的是在測試和生產預期兩者。

自動續訂訂閱是可恢復的,因爲Apple的服務器正在跟蹤您的活動訂閱。

+0

嗨@ Paulw11,謝謝你的回答。但是,我有另一個問題,然後請。蘋果表示,所有購買都需要在用戶擁有的所有設備上提供。如果是這樣的話,那麼如果你無法獲得歷史性的採購,那麼如何在每個設計上恢復購買? (我在我的服務器上維護了我的服務器上的訂閱到期日期,但是如果用戶使用他們自己的另一個設備上的其他應用程序帳戶登錄,會發生什麼情況?) – Richard

+0

對於非續訂訂閱,訂閱是與您的服務器上的帳戶相關聯,而不是iTunes帳戶,因此如果他們使用該設備上的相同應用程序帳戶登錄,它將/應該在另一臺設備上「恢復」。 – Paulw11

+0

謝謝。那麼,如果我使用同一用戶擁有的其他設備,那麼'restorePurchases'會返回一個結果集?你看到我的問題了嗎?蘋果要求購買恢復到所有擁有的設備,但「恢復購買」不適用於「非續訂訂購」購買。 – Richard