如何在iOS模拟器中获取假联系人?

时间:2015-08-10 18:21:47

标签: ios ios-simulator

如何在iOS模拟器中获取虚假联系人?是否有我可以使用的shell脚本或我的联系人的编辑器?

编辑:我使用React Native所以我不能在那里抛出一些Swift项目 - 是否有一个命令行工具或方法将iOS模拟器连接到我的Mac上的Contacts应用程序?

4 个答案:

答案 0 :(得分:25)

您可以 download this generated VCF file ,然后将其拖放到您的模拟器中以导入(1000)虚假联系人。我使用模拟数据生成网站Mockaroo创建了此测试数据。

这是使用一个小Node.js脚本创建的,该脚本采用CSV并将其转换为一个单独的VCF文件 - 然后您可以将其拖放到iOS模拟器中。这是导入联系人的最简单方法,无需代码或GitHub需要安装应用程序(正如其他答案所暗示的那样)。此CSV解析器假设您在文件顶部有三列(名字,姓氏和电话号码。如果您想添加更多列/变量以进行导入,只需根据{{修改您的CSV和解析器。 3}}

将以下脚本保存为" mock.js"并使用node mock运行它(这里是GitHub vCard spec)。这假定下面的脚本以及您的CSV文件(例如" MOCK_DATA.csv")位于同一目录中。运行此脚本的输出将是名为" vcards.vcf"的文件。

const fs = require('fs');
const csv = fs.readFileSync('./MOCK_DATA.csv', 'utf8');
const records = csv.split('\n').slice(1);
const VCARDS = [];
records.forEach(function(record, i) {
  const data = record.split(',');
  const VCARD = [
    'BEGIN:VCARD',
    'VERSION:4.0',
    `N:${data[1]};${data[0]};;;`,
    `FN:${data[0]} ${data[1]}`,
    `TEL;type=HOME:${data[2]}`,
    'END:VCARD'
  ].join('\n');
  VCARDS.push(VCARD);
});
fs.writeFileSync(`./vcards.vcf`, VCARDS.join('\n'));

答案 1 :(得分:2)

比特清洁版niftylettuce的回答,包含Faker数据,图片和额外数据,用于均匀编号的联系人:

https://github.com/corysimmons/vcf-generator

答案 2 :(得分:1)

如果您正在寻找一种编程的方式来做这种事情,那么simctl是一个不错的工具-

/usr/bin/xcrun simctl addmedia booted ~/path/to/contact.vcf

NSHipster的文章很棒:https://nshipster.com/simctl/

我忽略的关键一件事是,必须先“启动”模拟器,然后才能进行编程交互。

我主要是为了能够使用fastlane截屏,而我在该通道的开头运行此bash脚本。

它1.列出所有ios 13.4设备2.抓住UUID,并3.循环遍历每个模拟器以启动它,添加vcf并关闭它

运行需要几分钟,但是对我来说,打开所有模拟器并拖动VCF还是很不错的。我还清除了模拟器数据,因为这里没有重复数据删除。

#!/bin/bash
xcrun simctl list devices 'iOS 13.4' \
| grep -E -o -i "([0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12})" \
| while read line ; do 
  xcrun simctl boot $line
  /usr/bin/xcrun simctl addmedia booted PathTo.vcf
  xcrun simctl shutdown $line
done

答案 3 :(得分:0)

我在寻找同样的事情时发现了这一点。这是我最终做的事情:

for i in {0..100}
do
    echo "BEGIN:VCARD\n
    VERSION:4.0\n
    PRODID:-//BBros.us llc//bvCard.com//EN\n
    N:User"$i";TEst;;;\n
    FN:TEst User"$i"\n
    EMAIL:test.user"$i"@domain.com\n
    ORG:Great Business\n
    END:VCARD" > "File$(printf "%03d" "$i").vcf"
done

在终端我改为测试文件夹,然后在那里运行这个脚本。它创建了VCard文件,然后我将它们拖动到正在运行的模拟器窗口并将它们放在模拟器上。这导致模拟器打开联系人并导入它们。

我希望这会有所帮助。

*更新* 所以一旦我更新了Xcode,我现在只能一次导入一个联系人,这并不理想。这引出了另一个解决方案:

https://github.com/cristianbica/CBSimulatorSeed-Swift

这是一款可以构建的快速应用程序。在模拟器中运行,为您播种许多联系人。