Является ли пользовательский appStoreReceiptURL stati c в Swift? - PullRequest
0 голосов
/ 06 мая 2020

Я ищу статус опроса, чтобы увидеть статус подписки (автоматическое продление) моих пользователей в любой момент времени. Процесс прост: если у вас есть строка данных квитанции для пользователя, вы можете отправить ее в Apple (на стороне сервера), и они вернут расшифрованный JSON квитанции. Вот мой код для получения данных квитанции при покупке автоматически обновляемой подписки:

if let appStoreReceiptURL = Bundle.main.appStoreReceiptURL,
                    FileManager.default.fileExists(atPath: appStoreReceiptURL.path) {

                    do {
                        let receiptData = try Data(contentsOf: appStoreReceiptURL, options: .alwaysMapped)
                        print(receiptData)

                        //Encrypted receipt data
                        let receiptString = receiptData.base64EncodedString(options: [])
}                    }

Когда я тестирую с пользователем песочницы, покупающим разные подписки в моем приложении снова и снова, я вижу, что квитанция строка данных изменяется, но неясно, дают ли старые строки актуальную историю транзакций при передаче на сервер Apple.

Учтите следующее: если подписанный пользователь отменяет свою подписку, не находясь в приложении, получает новый телефон, а затем загружает мое приложение, чтобы определить статус своей подписки, правильно ли использовать строку данных квитанции из их первая покупка на их старом телефоне, чтобы определить текущий статус подписки?

Мой вопрос: Нужно ли мне постоянно обновлять значение строки данных квитанции пользователя в моей базе данных, чтобы просматривать месяцы состояния их подписки потом? Как насчет другого устройства?

1 Ответ

1 голос
/ 06 мая 2020

Лучший способ получить обновление статуса подписки - сохранить все квитанции в базе данных, а серверные службы должны подключаться к серверу Apple для получения последних обновлений.

Любые действия по подписке (отмена, продление, понижение, обновление) должны выполняться из серверной части. Ниже приведены преимущества для этого

  1. Подписки будут предоставляться со ссылкой на уникальные идентификаторы электронной почты.
  2. Если какой-либо пользователь меняет устройство, доступ к подписке обрабатывается в соответствии с уникальными идентификаторами электронной почты.
  3. Это предотвращает мошенничество при доступе к подписке для нескольких пользователей.

В песочнице это позволяет вам покупать подписки часто, потому что процесс повторяется и отменяет подписку в минутах / часах в зависимости от выбранной продолжительности в «Покупке в приложении».

Исходные метаданные в квитанциях не изменяются, пока покупатель не отменит повторную подписку. Так что вы можете сохранить и использовать эту квитанцию ​​для дальнейших обновлений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...