IOS Contacts獲取聯絡人

2021-07-28 07:04:21 字數 1837 閱讀 8600

新框架中將要使用最多的應該就是cncontactstore這個類了,官方對其的定義是乙個執行緒安全的,用來執行查詢和修改操作的類。此外官方還針對於這個類的使用給出了幾點小建議。

1.只去查詢那些你需要的聯絡人屬性。

2.當查詢所有聯絡人並快取結果時,首先查詢所有聯絡人的identifier,然後通過identifier來查詢所需要的詳細的聯絡人資訊。

3.想取出多個聯絡人資訊時,可以先收集聯絡人的唯一identifier,然後通過identifier來查詢所需要的詳細的聯絡人資訊。

4.如果快取了聯絡人資訊,那麼當接收到cncontactstoredidchangenotification時你需要重新整理資料。

5.cncontactstore的查詢方法中執行了i/o操作,所以應該避免在主線程中執行。

首先匯入contacts.framecontactsui.frame

然後在info.plist中新增nscontactsusagedescription後面的字串是你向使用者申請許可權的描述。

請求許可權

cnauthorizationstatus status = [cncontactstore authorizationstatusforentitytype:cnentitytypecontacts];

switch (status)

});

ios8之後是可以直接從應用內跳轉到設定頁面來修改通訊錄許可權的

//跳轉到設定應用訪問聯絡人介面
當聯絡人發生變化的時候通知,比如我們專案儲存的聯絡人資料的重新整理

//聯絡人發生變化通知

[[nsnotificationcenter defaultcenter] addobserver:self selector:@selector(addressbookdidchange:) name:cncontactstoredidchangenotification object:nil];

// do any additional setup after loading the view, typically from a nib.

}-(void)addressbookdidchange:(nsnotification*)anotification

//請求授權提示框

-(void)requestdetermain

}];}

已經拿到使用者的授權了,那麼接下來就可以讀取使用者資料了。首先,我們需要建立乙個cncontactfetchrequest物件。這裡簡單說一下predicatekeystofetch這兩個引數,其中的predicate謂詞引數,必須是由cncontact+predicates生成的。至於keystofetch引數,個人理解是由兩部分組成的,其中一部分可以去cncontact.h的最下面查,另一部分可以查詢cncontactformatter.h

獲取聯絡人列表

-(void)obtaincontact:(cncontactstore *)store];

}

如果沒什麼意外情況的話,所需要的通訊錄資訊都已經存在這個陣列裡面了,需要注意的是這個方法的結果不是一次性返回的,這個可以通過監控stop引數來確定。

獲取電話聯絡

importandroid.provider.contactscontract.commondatakinds.structuredpostal importandroid.provider.contactscontract.commondatakinds.website importandroid...

Windows Mobile獲取聯絡歷史

在現有的.net compact framework中,無論是1.0 2.0還是3.5版本,都沒有直接獲取使用者聯絡歷史的介面,那麼,我們只能自己封裝底層api來實現了。改介面在phone.dll中,呼叫phonegetcalllogentry方法會返回乙個聯絡歷史結構,在該結構中,包含號碼 姓名 ...

Windows Mobile獲取聯絡歷史

在現有的.net compact framework中,無論是1.0 2.0還是3.5版本,都沒有直接獲取使用者聯絡歷史的介面,那麼,我們只能自己封裝底層api來實現了。該介面在phone.dll中,呼叫phonegetcalllogentry方法會返回乙個聯絡歷史結構,在該結構中,包含號碼 姓名 ...