Прежде чем приступать к тестированию покупок автозапуска iOS, мне нужно подготовить базу данных сервера. Мой вопрос прост. Я просто хочу знать, какой размер я должен внести в поле varchar в моей базе данных.
Какая вероятная максимальная длина iOS io-i приобретает квитанцию-данные?
Ответ 1
Я использовал varchar (4096) для хранения кодов, обработанных base64.
Но, честно говоря, я не мог найти что-либо относительно длины квитанции в официальной документации (или где-либо еще). Единственное, что я нашел в документах Apple, заключалось в том, что содержимое/формат получения может быть изменен:
Содержимое и формат квитанции магазина являются частными и могут быть изменены. Ваша заявка не должна пытаться самостоятельно анализировать данные квитанции. Используйте описанный здесь механизм, чтобы проверить получение и получить информацию, хранящуюся внутри него.
Так что, вероятно, для текста вместо varchar действительно лучший вариант.
Ответ 2
receipt-data
может стать намного больше из-за того, что он содержит более раннюю информацию о подписке.
На практике типичный размер, вероятно, составляет менее 10 КБ. Но я видел, что квитанция-данные размером более 500 КБ в автоматическом тестировании из-за неоднократного создания новых подписчиков.
Лучше использовать varchar (max) или текст, где он не ограничен.
Ответ 3
В MySQL безопасно использовать MEDIUMTEXT, который имеет емкость 16 МБ.
Я использовал ТЕКСТ, но в какой-то момент не подходил.
TEXT имеет емкость всего 64 КБ, но более вероятно, что размер чека будет больше, чем после повторных транзакций. Я наблюдал это только после многих транзакций в режиме песочницы.
TINYTEXT: 255 characters - 255 B
TEXT 65,535 bytes - 64kb
MEDIUMTEXT: 16,777,215 - 16 MB
GBTEXT: 65,535 characters - 64 MB
KBLONGTEXT: 4,294,967,295 characters - 4 GB
Ответ 4
После некоторой простой математики я понял, что было безопасно использовать MEDIUMTEXT, поскольку каждый размер квитанции увеличивается с коэффициентом ~ 2 КБ/транзакция, и поэтому вам потребуется более 800 транзакций для максимального увеличения размера. Таким образом, учитывая очень безопасный период использования в 10 лет, потребуется более 80 транзакций в месяц или примерно 7-8 транзакций в месяц, что не будет иметь место в большинстве случаев использования.
Ответ 5
Может быть использовать jsonb
для хранения base64. Это может держать до 1 МБ.