【发布时间】:2013-11-13 13:11:08
【问题描述】:
我必须将 Passbook 与一个网站集成,该网站提供 PDF417 条形码和以二进制(而不是文本)编码的数据,例如:
我有什么办法可以在 pass.json 中编码这个二进制块,以便 Passbook 在 iPhone 上以与原始图片相同的方式显示它?
再次,我无法切换到基于文本的条形码,因为我不拥有数据。为澄清起见,所附图片包含一个 PDF417 条形码,解码后包含不可打印的字符,例如 NULL 字符,这就是我将其称为 binary 的原因。
更新
这是图像解码成字节数组的方式:
01 00 01 00 02 00 E7 C4 B5 96 B8 42 94 B3 B4 75
1A D1 F2 38 92 EA B5 0E 17 5D 0B 2A AA 64 18 CC
28 62 86 E5 74 5D A3 89 09 12 6E D5 7A 1A C9 EE
BF 23 9C E1 60 AD 9E DE 92 6D E5 79 99 C7 91 F1
6A D5 82 2E B6 E3 81 24 F8 0A F8 E6 44 5D 56 D2
00 00 00 00 00 00 40 0D 00 09 20 23 00 96 13 5C
10 EC 0C EA A3 E8 A3 20 30 4B 2A 20 7D 0F BB DF
F7 5E FA 1E 76 F7 40 20 10 08 04 02 81 40 20 30
A3 D5 6C 1A 04 76 14 10
这就是我尝试将其转换为 utf-8 字符串的方式:
{"message": "\u0001\u0000\u0001\u0000\u0002\u0000\u00E7\u00C4\u00B5\u0096\u00B8\u0042\u0094\u00B3\u00B4\u0075\u001A\u00D1\u00F2\u0038\u0092\u00EA\u00B5\u000E\u0017\u005D\u000B\u002A\u00AA\u0064\u0018\u00CC\u0028\u0062\u0086\u00E5\u0074\u005D\u00A3\u0089\u0009\u0012\u006E\u00D5\u007A\u001A\u00C9\u00EE\u00BF\u0023\u009C\u00E1\u0060\u00AD\u009E\u00DE\u0092\u006D\u00E5\u0079\u0099\u00C7\u0091\u00F1\u006A\u00D5\u0082\u002E\u00B6\u00E3\u0081\u0024\u00F8\u000A\u00F8\u00E6\u0044\u005D\u0056\u00D2\u0000\u0000\u0000\u0000\u0000\u0000\u0040\u000D\u0000\u0009\u0020\u0023\u0000\u0096\u0013\u005C\u0010\u00EC\u000C\u00EA\u00A3\u00E8\u00A3\u0020\u0030\u004B\u002A\u0020\u007D\u000F\u00BB\u00DF\u00F7\u005E\u00FA\u001E\u0076\u00F7\u0040\u0020\u0010\u0008\u0004\u0002\u0081\u0040\u0020\u0030\u00A3\u00D5\u006C\u001A\u0004\u0076\u0014\u0010";}
但是,Passbook 不显示等效的条形码。事实上,它只显示几个前字节。
【问题讨论】:
-
即使您不拥有数据,也许您可以访问二进制编码格式?您应该能够解码数据并将其作为文本传递给 PassBook。
-
@Johan Karlsson:我可以破译通行证。结果,我得到了一个开头包含零的二进制字节数组。问题是,我不知道如何将这个字节数组传递给 pass.json.
-
@PassKit:假设所附图片上的条形码解密为:0x00、0x01、0x00、0x02(这些是示例四个字节)。我将如何填充需要字符串的 JSON 字段:
{"message": "WHAT GOES HERE?" } -
这将取决于编码 - 您只需将字节流编码为您选择的编码。您目前如何生成和签署通行证?也许我可以提供一些代码来演示。
-
有人删除了我的答案,所以……我猜他们不认为这是一个答案?您是在实际的 iPhone 上尝试过,还是将其放入 sim 卡中?您的转义字符串在实际 iPhone 上为我显示正确的条形码,并在 Mac 上被截断。这是一个错误,但应该不重要。