[英]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.