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