article_image

注:本文最初版本发表于 2018 年,当时我正在读大学,Shortcuts(Workflow)也还没被 Apple 收购。五年多过去,原来的动作早就需要维修,也有不少新模块可用,同时我也有了新用例和新想法,于是写了这篇修订版文章。

商务往来1,递交名片,古已有之。iOS 17 更是推出了华丽的 NameDrop,鼓励用户制作图文并茂的名片,并通过类似 AirDrop 的技术投送给其他 Apple 用户。

——等等。仅限 Apple 设备?必须开启 Wi-Fi 和 蓝牙?AirDrop 也要开启2?还仅限最新系统?Android 怎么办?算了,还是继续微信扫码吧——即便只想知道对方的手机号或邮箱。

NameDrop 实属“高技术,低生活”,施展了严格遵守克拉克第三定律的科技魔法,效果却只相当于二十年前的 QQ 秀或者更早的掌机红外连线通讯,可能还远不如前述几者稳定。3

我早年设计过一个扫码添加联系人的 Shortcuts 动作(当时 Shortcuts 还叫 Workflow),送出名片的一方只需运行动作、选定联系人即可生成二维码,而接收方用 iPhone 自带相机扫一扫就能创建新联系人。

Alt text
生成并分享名片二维码的步骤

这一设计,至今稳定可靠,并且更符合国人扫码加好友的习惯。

动作使用

下载 Shortcuts 动作后,第一次使用时可能要授权动作访问通讯录,诸位尽管放心,我提供的动作不会上传任何数据,所有操作均在本地完成。顺利运行后,即可看到联系人选择界面,每名联系人均以头像加姓名的方式显示,比较直观。这一细节也是本次修订的原因之一,利用了较新的过滤和选择模块。4

选好联系人后,Shortcuts 会尝试读取其姓名、电话有邮箱信息——这些最为常用——并生成一张二维码。当然,诸位可以自由增减所需信息类型,具体方法参加下一节。

最后,接收方只需用系统自带摄像头扫描上一步获得的二维码,然后点击一下画面中间或底部(具体视系统版本而定)弹出的联系人姓名按钮,即可进入创建或更新联系人信息的页面。

原理简析

本文方案是 vCard(Versitcard,电子名片)5 在二维码中的应用,目前所有 iOS 11 或更高版本的设备都支持直接扫码添加联系人,Android 部分机型的原生相机可能不支持,但至少能直接用微信扫。

vCard 是电子名片的标准格式,有时你收到的邮件里就会夹带着它,不过不要轻易点开,往往里面是广告。不同的操作系统中 vCard 有不同的具体表现形式,但其中的文本内容是基本相同的:

BEGIN:VCARD
VERSION:3.0
N:姓;名;; Mr.;
FN:全民
ORG:公司名
TEL;TYPE=类型,VOICE:电话
EMAIL:邮箱
END:VCARD

只要是上述这样格式的文本,一旦被支持的客户端读取到,就会像触发了超链接一般,提示你可以把对应联络信息加入通讯录。vCard 的文本格式被开发者 zxing 吸收,纳入了其制定的二维码内容标准,使得通过扫码添加联系人成为了可能。

熟悉原理后,制作二维码就不难,无非就是先获取联系人信息,再分门别类填进 vCard 格式的文本中,最后生成二维码。这些操作均有现成 Shortcuts 模块。注意,虽然开头用了过滤模块,但主要是为了列表选择时的视觉效果,其不一定真的要起到过滤作用,条件(filter)可以略去不填。

Alt text
Shortcuts 步骤

选择联系人后,就可以随心所欲——请确保先读懂了 vCard 的语法——添加 Get Details of Contacts 模块,每次获取一项联系人数据,接着将它们组合进 vCard 格式的文本中,悉数存于一个文本框。最后,用 Generate QR Code 模块产生二维码。

实际操作中,有些联系人的邮箱可能是空缺的(国人并不那么普遍使用邮件联络),而有些人也不习惯把姓氏和名字一个萝卜一个坑地填入通讯录,更习惯写在一起……这些大陆式的习惯都会导致 vCard 数据缺胳膊少腿,不过其容错性较好,一般也不影响二维码扫码效果,顶多缺少的那一项空着罢了。

除了姓名、电话和邮箱,你也能为名片二维码添加更多内容,其语法如下:

  • 地址:ADR;TYPE=WORK,PREF:具体地址;街;区;市;省;邮编;国家
  • 生日:REV:1999-10-31

地址哪项不需填写的话请留空,比如 ADR;TYPE=WORK,PREF:;;;深圳;广东;;国家,扫描出来的地址就只包含省市和国家信息。即便留空,分号还是需要保留,以免数据错位。

小结以及其他

早年间,我主要是想避开“先加微信再发电话号码”这种中国式递名片习惯,既然横竖喜欢扫码——显然,早期我对拿着摄像头到处瞄准的做法有些不悦——那不如直达鹄的,扫个码就完成联络信息的添加。

几年断断续续使用下来,我意识到扫码(主要还是 vCard)确实可靠,而在 NameDrop 把分享名片复杂化的当下,了解一些古老却稳定的技术,或许也有必要。

当然,递名片本身就有自我展示的功能,NameDrop 沿着 iOS 16 花式锁屏的界面,给了更多个性化空间,无可非议——只是在这些技术真正成熟、普及之前6,还是准备一些更信得过的方式,才不失体面。


  1. 鉴于微信已经成了大陆地区事实上的通讯工具,生活交际大家往往都不介意加微信好友,本文的场景主要就剩下基于电话和邮件的商务往来了。
  2. 在大陆,开启后十分钟就会自动关闭,等于每次都要手动扒拉大半天,不可能达到 Apple 宣传的效果。
  3. 我对 Apple 的科技魔法都保持警惕,例如 AirPods——自己的设备总是断开连接,而别人的设备却疯狂挤入我的手机。还有从未靠谱过的 iCloud 和连续互通剪贴板。
  4. 如果你比较讲究,也可以设定过滤条件,每次仅从预设范围内挑选联系人。实际操作中,我有几组联系人身份敏感,断不可能分享给他人,遂将其排除出选择范围。关于列表的显示效果,另可参加《用 Shortcuts 体面且有个性地展示二维码》《轻量级图片标注方案:Shortcuts 篇》
  5. 还有一种 MeCard 格式,作用是类似的。参考:https://en.wikipedia.org/wiki/MeCard
  6. 和 AirDrop 一样,或许永远也不可能普及,至少不太可能在 Apple 之外的环境中普及。

author_avatar

Lawyer, macOS/iOS Automation Amateur