[英]CNContact for Mac OS X 10.11
从OS X 10.11和iOS 9.0 Apple提供此框架联系人:
我想从Mac访问联系人,但我无法做任何事情,因为该应用程序无法访问联系人:
switch CNContactStore.authorizationStatusForEntityType(.Contacts) {
case .Authorized:
print("Authorized")
NSUserDefaults.standardUserDefaults().setBool(true, forKey: "contactsAllowed")
case .Denied:
print("Denied")
NSUserDefaults.standardUserDefaults().setBool(false, forKey: "contactsAllowed")
case .NotDetermined:
print("Not Determined")
case .Restricted:
print("Restricted")
}
该应用程序从不提示允许访问联系人,也不能在“系统偏好设置”中选择它(它不会显示)。
有没有人知道如何在Mac上使用它们(在iOS上运行良好)?
对CNContactStore实例的任何调用都应该触发请求。 如果不试试
CNContactStore调用实例:
[[CNContactStore alloc] init];
隐私
用户可以基于每个应用程序授予或拒绝访问联系人数据。 在要求用户授予或拒绝访问权限时,对CNContactStore的任何调用都将阻止该应用程序。 请注意,仅在第一次请求访问时才提示用户; 任何后续的CNContactStore调用都使用现有权限。 为了避免让您的应用程序的UI主线程块进行此访问,您可以使用异步方法[CNContactStore requestAccessForEntityType:CNEntityTypeContacts completionHandler:]或将您的CNContactStore用法分配给后台线程。
你在游乐场试试吗? 这不行。
在您的项目中尝试此方法:
func getContactImage(name:String) -> NSImage?
{
let store = CNContactStore()
do
{
let contacts = try store.unifiedContactsMatchingPredicate(CNContact.predicateForContactsMatchingName(name), keysToFetch:[CNContactImageDataKey])
if contacts.count > 0
{
if let image = contact[0].imageData
{
return NSImage.init(data: image)
}
}
}
catch
{
}
return nil
}
无论如何,你的问题引导我找到一种方法来获取联系人图像,所以谢谢你。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.