2014-12-10 55 views
0

所以,我有一個應用程序,剛剛被蘋果拒絕,因爲沒有實施restorePurchases按鈕,用戶恢復他們購買的任何非消耗品。我知道背後的邏輯,並且因爲錯過它而感到不好(或者至少沒有理解它的實現的阻塞方面),但是我有一個不尋常的情況(我不確定是否有所不同,但無法找到很多圍繞它的最佳實踐......)安全問題與恢復在應用程序內購買

我的應用程序是跨平臺的,因此用戶可以在Android和iOS上購買相同的產品,並且這些購買需要持續跨平臺...所以,成功驗證後,我更新了後端的值,這兩個客戶端都具有讀寫權限。由於這個原因,我認爲我堅持跨設備和平臺進行購買很好......但購買與我的應用程序用戶類中的帳戶綁定。現在

,如果我要實現按鈕所要求的蘋果,什麼是從恢復使用Apple ID在我的應用程序數據庫相關聯給其他用戶的購買停止用戶...可能導致的收入泄漏'可以這麼說 - 例如,以朋友用戶的身份登錄,恢復購買,這在我的情況下會將購買複製到用戶類...然後我有兩個用戶只有一個相關的收入......

所以......問題:

1)我被天真欺騙系統的能力嗎? 2)有沒有人有任何有關如何解決/解決此問題的最佳做法?

回答

2

蘋果在In-App Purchase Programming Guide

首先解決了這一點,你可以提供你的用戶的帳戶名與購買信息,以幫助蘋果來檢測違規行爲 -

檢測違規行爲

App Store使用不規則的活動檢測引擎來幫助 實施欺詐行爲。有些應用程序可以提供額外的信息來提高引擎檢測異常事務的能力。如果您的用戶 有您的帳戶,那麼除了他們的App Store帳戶之外, 還會在請求付款時提供此附加信息。

然後,當談到恢復的購買可以提供這種相同的用戶帳戶信息restoreCompletedTransactionsWithApplicationUsername:方法 -

恢復完成的交易

您的應用程序通過調用 啓動過程SKPaymentQueue的restoreCompletedTransactions方法。這會發送一個 請求到App Store,以恢復所有應用的完成 事務。如果您的應用程序爲其支付請求的應用程序用戶名 屬性設置了值,如檢測不規範 活動中所述,請在恢復事務時使用restoreCompletedTransactionsWithApplicationUsername: 方法提供相同的信息。

最後,您可以使用服務器上的收據信息將原始事務與恢復的事務關聯到相同的用戶標識,並且在不匹配時不恢復功能。

+0

啊哈,從來沒有抓到有關用戶名的部分......謝謝!如何提供付款? – 2014-12-10 23:26:09

+0

您指的是哪一項付款? – Paulw11 2014-12-10 23:28:30

+0

「如果您的用戶在您的賬戶中,除了他們的App Store賬戶,請在付款時提供這些額外的信息。」 ...任何想法如何包含我的用戶名付款? – 2014-12-10 23:30:43