Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 什么';苹果ios采购收据数据的可能最大长度是多少?_Iphone_Database_Cocoa Touch_Ios4_In App Purchase - Fatal编程技术网

Iphone 什么';苹果ios采购收据数据的可能最大长度是多少?

Iphone 什么';苹果ios采购收据数据的可能最大长度是多少?,iphone,database,cocoa-touch,ios4,in-app-purchase,Iphone,Database,Cocoa Touch,Ios4,In App Purchase,在开始测试iOS自动恢复购买之前,我需要准备我的服务器数据库。我的问题很简单。我只是想知道我应该在数据库中创建多大的varchar字段。我使用varchar(4096)来存储我的base64编码收据 但老实说,我在官方文件(或其他地方)上找不到任何关于收据长度的信息。我唯一发现的是收据内容/格式可能会发生变化: 商店收据的内容和格式是私有的,可能会更改。应用程序不应尝试直接解析收据数据。使用此处描述的机制来验证收据并检索其中存储的信息 因此,选择文本而不是varchar可能是最好的选择。接收数据

在开始测试iOS自动恢复购买之前,我需要准备我的服务器数据库。我的问题很简单。我只是想知道我应该在数据库中创建多大的varchar字段。

我使用varchar(4096)来存储我的base64编码收据

但老实说,我在官方文件(或其他地方)上找不到任何关于收据长度的信息。我唯一发现的是收据内容/格式可能会发生变化:

商店收据的内容和格式是私有的,可能会更改。应用程序不应尝试直接解析收据数据。使用此处描述的机制来验证收据并检索其中存储的信息


因此,选择文本而不是varchar可能是最好的选择。

接收数据可能会因为包含较旧的订阅信息而变得更大

实际上,典型尺寸可能低于10KB。但在自动化测试中,由于反复创建新订阅,我已经看到了超过500KB的接收数据


最好在没有边界的地方使用varchar(max)或text

在MySQL中,可以安全地使用容量为16MB的MEDIUMTEXT

我们使用了文本,但有一点不太合适

文本只有64kb的容量,但在重复交易后,收据的大小很可能会超过这个大小。我只是在沙盒模式下进行了多次交易后才观察到这一点

TINYTEXT:255个字符-255b

文本65535字节-64kb

媒体文本:16777215-16MB

GBTEXT:65535个字符-64 MB

KBLONGTEXT:4294967295个字符-4 GB


在做了一些简单的计算后,我发现使用MEDIUMTEXT是安全的,因为每个收据大小都会以每交易~2KB的倍数增长,因此需要800多个交易才能最大化大小。
因此,考虑到10年的非常安全的使用跨度,它每月需要80多个事务,或者大约每月需要7-8个事务,这对于大多数用例来说是不可能的。

可以使用
jsonb
来存储base64。它可以容纳1MB的数据。

只需使用文本,那么它将始终适合:)我需要建议对当前的API进行修改,该API已完全定义,因此需要更加具体。最好使用MEDIUMTEXT。我使用了文本,但有一点不太合适。我将它们存储在服务器上。我的收据大小是
6340
字节长(Mac App Store,有订阅)。我测试发现4096不够我使用ostringstream自动应用大小。SQL Server中最接近MySQL MEDIUMTEXT(16777215个字符)的是nvarchar(最大)536870912个字符有人在保存数据之前尝试过压缩数据吗?