You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Apple Wallet中正确格式化vCard以生成可识别的条码/QR码?

Apple Wallet嵌入自包含vCard条码的正确格式化方案

核心解决思路

Apple Wallet的条码message字段要求内容是符合JSON语法规范的原始vCard文本,扫描器需要直接解析标准vCard结构,因此关键是处理好JSON转义和vCard的换行格式。

正确格式化步骤

  • 保留vCard标准字段结构,不修改内容,仅处理换行符
  • 将vCard中的换行(\n或\r\n)通过JSON序列化工具自动转义为合法的JSON字符串格式(避免手动转义出错)
  • 禁止使用URL编码,扫描器期望直接读取原始vCard文本,编码会破坏数据结构
  • 优先选择PKBarcodeFormatQR或PKBarcodeFormatAztec格式,二者容量足够容纳完整vCard;Code128容量有限,大概率无法放下你的示例vCard

PHP实现示例

// 原始vCard内容
$vcard = <<<VCARD
BEGIN:VCARD
VERSION:3.0
REV:2023-11-08T00:00:00Z
N:Murphy;Jill;;;
ORG:Company
TITLE:Developer
EMAIL;INTERNET;WORK:test@example.com
URL:https://example.com
END:VCARD
VCARD;

// 构造Apple Wallet条码配置
$passConfig = [
    "barcode" => [
        "format" => "PKBarcodeFormatQR",
        "message" => $vcard,
        "messageEncoding" => "iso-8859-1"
    ]
];

// 生成符合规范的JSON(json_encode会自动处理换行转义)
$passJson = json_encode($passConfig, JSON_PRETTY_PRINT);

错误方案复盘

  • 直接传入未处理的vCard:未转义的换行会破坏JSON结构,Apple Wallet无法解析条码数据
  • 手动拼接单行加\n:未通过JSON序列化工具处理时,容易出现转义不彻底的问题
  • 使用urlencode:编码后的字符串不是标准vCard格式,扫描器无法识别
  • 选择Code128格式:容量不足,无法容纳完整vCard内容

内容的提问来源于stack exchange,提问作者donohoe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 16:43:25