Swift中如何组装多段Smart Health Card二维码串一键添加至Apple Wallet与Health
处理多段Smart Health Cards并添加至Apple Wallet与Health的方案
核心逻辑
多段Smart Health Card(SHC)二维码是完整数据拆分后的分段传输格式,正确组装方式如下:
- 提取分段数据:对每段
shc:/[段号]/[总段数]/[数据]格式的字符串,移除前缀部分,仅保留最后的[数据]段 - 按序拼接:严格按照段号从小到大的顺序,将所有提取到的数据段拼接成一个完整字符串
- 生成跳转链接:将拼接后的完整字符串替换到Apple的跳转链接模板中,得到最终可调用的链接:
https://redirect.health.apple.com/SMARTHealthCard/[完整拼接数据]
示例操作
针对你提供的三段SHC:
shc:/1/3/567629095243206034602...
shc:/2/3/315057062436201156761...
shc:/3/3/634538347210283310097...
- 分别提取每段的数据部分:
567629095243206034602...、315057062436201156761...、634538347210283310097... - 按段号顺序拼接为:
567629095243206034602...315057062436201156761...634538347210283310097... - 生成最终链接:
https://redirect.health.apple.com/SMARTHealthCard/567629095243206034602...315057062436201156761...634538347210283310097...
Swift实现要点
- 排序分段:如果获取到的分段顺序不确定,先提取段号(
shc:/[段号]/...中的第二个部分)进行排序,确保拼接顺序正确 - 提取数据:可通过字符串分割实现,示例代码片段:
func extractSHCData(from shcString: String) -> String? { let components = shcString.components(separatedBy: "/") guard components.count == 4 else { return nil } return components[3] } - 触发添加流程:将拼接后的完整数据插入跳转链接模板,通过
UIApplication.shared.open(_:)调用该链接,即可触发「添加至Apple健康与钱包」的流程
内容的提问来源于stack exchange,提问作者Barb
相关产品推荐
相关产品推荐

