在我的iPhone应用程序中,当我点击我拥有的vCard时,我想将vCards保存到我的iPhone的联系人中.
我怎样才能做到这一点?
我在应用商店看到了一个应用商店的应用:
http://itunes.apple.com/us/app/read-vcard/id402216831?mt=8
谢谢
我试图弄清楚如何使用VObject将VCard解析为Python字典.
vobj=vobject.readOne(string)
print vobj.behavior.knownChildren
Run Code Online (Sandbox Code Playgroud)
这就是我得到的:
{'CATEGORIES': (0, None, None), 'ADR': (0, None, None), 'UID': (0, None, None), 'PHOTO': (0, None, None), 'LABEL': (0, None, None), 'VERSION': (1, 1, None), 'FN': (1, 1, None), 'ORG': (0, None, None), 'N': (1, 1, None), 'PRODID': (0, 1, None)}
Run Code Online (Sandbox Code Playgroud)
如何使用我的VCard数据填充字典?
我的代码必须解析Vcard 2.1格式.我正在使用vpim(没有其他库)
当我跑步时Vpim::Vcard.decode(data)我得到错误:
undefined method `each' for #<String:0x0000000928e778>
Run Code Online (Sandbox Code Playgroud)
堆栈跟踪:
NoMethodError (undefined method `each' for #<String:0x0000000928e778>):
vpim (0.695) lib/vpim/rfc2425.rb:82:in `unfold'
vpim (0.695) lib/vpim/rfc2425.rb:308:in `decode'
vpim (0.695) lib/vpim/vcard.rb:692:in `decode'
app/models/event.rb:71:in `block (2 levels) in parse_data'
Run Code Online (Sandbox Code Playgroud)
我gem install vcard尝试在RailsApp初始化之后运行并要求'vcard'directctry(在vpim gem之后config.gem不包括此文件).(config.gem 'vpim'包含在environment.rb中)通过这种方式我得到另一个错误:
;=D0=9D=D0=B0=D0=B4=D1=80=D0=B0=20=D0=B1=D0=B0=D0=BD=D0=BA=20=D0=BE=D0=BB=
(异常类是Vpim::InvalidEncodingError)
Vcard代码我尝试解析:
BEGIN:VCARD
VERSION:2.1
REV:20090710T151929Z
TEL;CELL:80954130722
X-CLASS:private
END:VCARD
Run Code Online (Sandbox Code Playgroud)
有趣的是,第二个错误是我在Rails模型中解码时.当我尝试直接从脚本/控制台解码时(在installinv vcard gem和direct包括'vcard'之后),我成功获得了Vcard对象.
堆栈跟踪:
Vpim::InvalidEncodingError (;=D0=9D=D0=B0=D0=B4=D1=80=D0=B0=20=D0=B1=D0=B0=D0=BD=D0=BA=20=D0=BE=D0=BB=):
vcard (0.1.1) lib/vcard/field.rb:106:in `decode0'
vcard (0.1.1) lib/vcard/field.rb:172:in `initialize'
vcard (0.1.1) lib/vcard/field.rb:183:in `new'
vcard (0.1.1) lib/vcard/field.rb:183:in `decode'
vcard (0.1.1) lib/vcard/rfc2425.rb:308:in …Run Code Online (Sandbox Code Playgroud) 我们有一个网站,允许人们单击指向 vCard .vcf 文件的链接以在他们的手机上安装详细联系信息。处理这个问题的方法在 iOS 13 中发生了变化,这真的让人们感到困惑。以前,vCard 在联系人应用程序中打开,并且有一个保存按钮将其添加到联系人。很简单,人们理解它。现在 vCard 在预览中打开,但没有明显的方法将其保存到他们的联系人中。他们必须知道点击操作图标,然后找到联系人条目并点击它。很少有人能解决这个问题,他们只是点击“完成”按钮,认为它已被添加。向您的联系人添加 vCard 对大多数人来说太难了。
有谁知道我们可以跳过预览屏幕并直接在联系人应用程序中打开电子名片的技巧吗?
加里
我基本上创建一个简单的文本文件,其名称test.vcf以以下内容为例:
BEGIN:VCARD
VERSION:3.0
FN:AAA BBB CCC
N:AAA BBB CCC
TEL;TYPE=cell:9876543210
END:VCARD
Run Code Online (Sandbox Code Playgroud)
当我导入手机时,上述文件有效。以下内容不起作用。
BEGIN:VCARD
VERSION:4.0
FN:AAA BBB CCC
TEL;TYPE=cell:9876543210
END:VCARD
Run Code Online (Sandbox Code Playgroud)
这让我怀疑vcf我的 Android 手机的“通讯录应用程序”支持哪个版本的文件。
这是我的 Android 手机的“通讯录 APP”关于部分
Contacts
Version 9.3.4.340
Run Code Online (Sandbox Code Playgroud)
vcf如果不需要找到支持该文件版本的“通讯录APP” ,那么我上面使用的VERSION:4.0的内容有什么问题吗?
在 IOS 上使用 Chrome 通过数据 URL 下载电子名片时,我无法使用下载属性。我使用下面的代码
function download(filename, text) {
var element = document.createElement('a');
element.setAttribute('href', 'data:text/vcard;charset=utf-8,' + encodeURIComponent(text));
element.setAttribute('download', filename);
element.style.display = 'none';
document.body.appendChild(element);
element.click();
document.body.removeChild(element);
}
Run Code Online (Sandbox Code Playgroud)
它在 IOS 上的 Safari 和 Android 上的 Chrome 上运行良好。但是 IOS 上的 Chrome 会忽略文件名并仅下载名称为“document”的文件,因此联系人应用程序不会打开该文件。
我不小心制作(并分发)了一个 QR 码到 URL(重要:不是如下所示的 VCARD 数据集)。所以现在我需要将访问从 URL“直接”重定向到 VCARD 数据:
BEGIN:VCARD
VERSION:3.0
N:Doe;John;
FN:John Doe
TEL;TYPE=CELL:54321
END:VCARD
Run Code Online (Sandbox Code Playgroud)
我说“直接”是指,如果 URL 是 .vcf 文件,iPhone 很乐意提供保存联系人信息,但根据我的测试,Android 不会,而是需要将 QR 码“直接”转到数据集(我不知道还有什么方法可以让android直接提示保存联系人?)。
我研究了一些相关的帖子,但他们谈到让 android 用户首先下载 VCARD 文件或应用程序或生成 .vcf 文件,这不是我的情况,因为我的 URL 已经直接转到 .vcf 文件。
我不确定如果我通过重定向到带有一些神奇的PHP函数的页面来返回VCARD数据集,是否可以让android提示保存联系人。
因为机器人在访问 xyz.com/jd.vcf 时不会提示保存联系人,所以我需要将其“重定向”到 VCARD 数据集 - 但鉴于它不是“URL”,我无法重定向到它。
我们在尝试在 PHP 中创建 vcard 时遇到了字符编码问题。
在 Outlook 中,使用特殊字符的名称会被扭曲,例如“é”变成了“é”。
我们更新了 Windows 字符编码的标题和 FN 和 N 部分,但问题仍然存在。
感谢任何建议。
电子名片摘录:
BEGIN:VCARD
VERSION:3.0
REV:2013-03-27 19:37:46
FN;CHARSET=Windows-1252:Namé S. Nameé
N;CHARSET=Windows-1252:Namé;Namé;;;
TITLE:Associate
ORG:Company
EMAIL;TYPE=internet,pref:name@abc.com
TZ:-0400
END:VCARD
Run Code Online (Sandbox Code Playgroud)
Vcard 的 PHP 头文件:
header("Content-type: text/x-vcard; charset=windows-1252;");
header("Content-Length: ".strlen($vc->card));
header("Content-Disposition: attachment; filename=".$vcard_name.".vcf");
header("Pragma: public");
Run Code Online (Sandbox Code Playgroud) 我正在制作一份注册表,提交时需要家庭和工作地址。字段如下:
<html>
<form>
<input name="street-address" autocomplete="home street-address" required />
<input name="postal-code" autocomplete="home postal-code" required />
<input name="locality" autocomplete="home locality" required /> <!-- or "home city" -->
<input name="organization" autocomplete="organization" required />
<!-- addressee or department withing the organization. optional field -->
<input name="addressee" autocomplete="????????" />
<input name="work-street-address" autocomplete="work street-address" required />
<input name="work-postal-code" autocomplete="work postal-code" required />
<input name="work-locality" autocomplete="work locality" required />
</form>
</html>
Run Code Online (Sandbox Code Playgroud)
我正在使用http://microformats.org/wiki/hcard和https://html.spec.whatwg.org/multipage/forms.html#attr-fe-autocomplete-organization-title创建一个漂亮的浏览器兼容的自动填充表单。
我不知道收件人/部门字段是否有一个很好的自动填充名称。有人熟悉这个/或任何输入吗?
我需要能够在网站上显示一些链接:示例
<a href="/download.vcard.php">Add as contact</a>
Run Code Online (Sandbox Code Playgroud)
有没有办法强制 iPhone 和 Android 手机打开“新联系人”系统窗口,其中包含可编辑字段和“保存”按钮?
如果无法在后端执行此操作,也许有任何 jquery 插件可以从前端支持此操作吗?
这是 vcard 的正确内容类型集吗?
<?php
header('Content-Type: text/x-vcard;charset=utf-8;');
?>
Run Code Online (Sandbox Code Playgroud)
我的问题几乎与如何从网站将 vCard(.vcf 文件)添加到 Android 联系人中相同,但它是 8 年前创建的,从那时起很多事情都发生了变化。