使用 Twilio 发送的 vCard 未在 iOS 中正确呈现
Posted
技术标签:
【中文标题】使用 Twilio 发送的 vCard 未在 iOS 中正确呈现【英文标题】:vCard sent with Twilio not properly rendered in iOS 【发布时间】:2019-09-26 22:28:57 【问题描述】:我正在尝试使用 curl
将 vCard 发送到我的 ios,但 vCard 未在我的 iPhone 中正确呈现。
EXCLAMATION_MARK='!'
curl -X POST https://api.twilio.com/2010-04-01/Accounts/<acc>/Messages.json \
--data-urlencode "Body=Test6$EXCLAMATION_MARK" \
--data-urlencode "MediaUrl=https://mighty-health-assets.s3.amazonaws.com/vcf/James.vcf" \
--data-urlencode "From=+14155926669" \
--data-urlencode "To=+14159108243" \
-u <acc>:<token>
我对我的文件尝试了不同的 Content-Type
和 Content-Disposition
。
对于内容处置:
inline; filename="James.vcf"
attachment; filename="James.vcf"
inline; name="James"
attachment; name="James"
对于内容类型:
text/vcard
text/x-vcard
text/vcard
text/vcard; charset=utf-8; name="fileName.vcf"
结果总是一样的:
我想知道下一步该尝试什么,或者您之前是否遇到过同样的问题。
【问题讨论】:
【参考方案1】:疑难解答问题
原来其中一个配置是正确的,而我面临的问题是另一个。
-
当 Twilio 第一次接收文件时,它会缓存
如果您相应地调整标头,它不会影响 VCF 文件的传递,因为它将使用缓存版本
有办法克服这个问题
Twilio 缓存
要删除文件上的缓存或设置适当的缓存策略,请阅读:https://support.twilio.com/hc/en-us/articles/360024716314-How-Can-I-Change-the-Cache-Behavior-or-Message-Media-Files-
疑难解答我发现 Twilio 不会仅根据 VCF 文件的文件名更改缓存,而是根据文件内容本身更改缓存,因此您必须修改文件才能清除缓存,而不仅仅是名称。
正确配置
为了得到iOS手机正确解析的文件,您可以使用与附件https://mighty-health-assets.s3.amazonaws.com/vcf/James+Li.vcf相同的文件格式
标题
iOS 上的联系人卡片只能显示与您的文件相同的文本,因此请使用 Content-Type
上相同的 filename
标题属性命名您的文件,它应该会相应地工作
Content-Type: inline; filename="<You file name>.vcf"
Content-Disposition: text/x-vcard
Cache-Control: no-cache
【讨论】:
以上是关于使用 Twilio 发送的 vCard 未在 iOS 中正确呈现的主要内容,如果未能解决你的问题,请参考以下文章