2013-03-12 2 views
0

У меня есть приложение, которое использует подписки на автоматическое продление подписки. Мне нужно получить доступ к завершенным транзакциям, чтобы определить, имеет ли пользователь действительную подписку или нет. Я понимаю, что «restoreCompletedTransactions» сделает это за вас, однако это досадно требует от пользователя повторного входа в свой пароль iTunes.iOS 6 В покупках приложений - доступ к завершенным данным транзакции без использования «restoreCompletedTransactions», для которого требуется пароль пользователя

Есть ли лучший способ сделать это? Хранение данных квитанции на местах не имеет смысла, так как мне нужно будет проверить последнюю транзакцию, чтобы гарантировать, что expires_date еще не достигнуто, поэтому я бы предположил, что мне нужно всегда загружать данные транзакций прямо из Apple.

ответ

1

Вы хотите сохранить данные квитанции и ваш общий доступ, если вы хотите знать, что пользователь действителен или вы не хотите публиковать данные о квитанции, ваш общий секрет для сервера Apple, и яблоко ответит на самую последнюю квитанцию ​​и статус последней квитанции, статус которого равен «0», тогда действительный пользователь или если статус «21006». Эта квитанция действительна, но срок действия подписки истек. Когда этот код состояния возвращается на ваш сервер, данные квитанции также декодируются и возвращаются как часть ответа. verify this link

+0

Да, это был вывод, к которому я пришел. Моя идея - хранить данные квитанции в NSUserDefaults для идентификатора продукта в качестве ключа. Затем сверьтесь с яблоком, чтобы получить последние данные в ответ. Мой вопрос в том, безопасно ли хранить ваш общий секрет в приложении? Какие потенциальные проблемы могут возникнуть, если кто-то взломал устройство и получил доступ к этому секретному секретному паролю? – JimmyJammed

+0

https://developer.apple.com/library/ios/#releasenotes/StoreKit/IAP_ReceiptValidation/ перейдите по этой ссылке после загрузки сопутствующего файла в верхнем правом углу в .h файле #define ITC_CONTENT_PROVIDER_SHARED_SECRET @ "ваш секрет здесь" здесь вы хотите ввести свой общий секрет, который был предоставлен apple –