node.js获取所有mac联系人

时间:2016-05-03 11:51:42

标签: node.js electron

我希望在不使用节点包“osa-contacts”的情况下获取联系人应用程序中所有mac联系人的数组列表,因为它不能像我想要的那样工作而且速度不快。有没有办法做到这一点?目前我正在使用OSX El Capitan 10.11.4。

这是一个electron.atom.io应用程序。

1 个答案:

答案 0 :(得分:2)

你可以使用类似nodobjc的东西,它提供了Node和Objective-C运行时之间的桥梁(尽管如果你想广泛使用它,你可能已经有了一些Objective-C / Cocoa体验)。 / p>

这是一个以姓/名打印联系人列表的示例:

var $ = require('nodobjc');

// Load the AddressBook framework.
$.framework('AddressBook');

// Get an instance of the address book for the current user.
var addressBook = $.ABAddressBook('addressBook');

// Retrieve all contacts.
var people = addressBook('people');

// Run through the list of contacts and print their first/last name.
var count = people('count');
for (var i = 0; i < count; i++) {
  var person    = people('objectAtIndex', i);
  var firstName = person('valueForProperty', $.kABFirstNameProperty);
  var lastName  = person('valueForProperty', $.kABLastNameProperty);
  console.log(i, firstName, lastName);
}

我不知道这与osa-contacts相比有多快(或更慢),或者它是否像你想要的那样工作。它使用的AddressBook框架记录在案here