IOS開發筆記 IOS如何訪問通訊錄
IOS開發筆記 IOS如何訪問通訊錄
其實我是反對這類的需求,你說你讀我的隱私,我肯定不願意的。
幸好ios6.0 以後給了個許可權控制。當開啟app的時候你可以選擇拒絕。
實現方法:
- //讀取所有聯絡人
- -(void)ReadAllPeoples
- {
- //取得本地通訊錄名柄
- ABAddressBookRef tmpAddressBook = nil;
- if ([[UIDevice currentDevice].systemVersion floatValue]>=6.0) {
- tmpAddressBook=ABAddressBookCreateWithOptions(NULL, NULL);
- dispatch_semaphore_t sema=dispatch_semaphore_create(0);
- ABAddressBookRequestAccessWithCompletion(tmpAddressBook, ^(bool greanted, CFErrorRef error){
- dispatch_semaphore_signal(sema);
- });
- dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);
- dispatch_release(sema);
- }
- else
- {
- tmpAddressBook =ABAddressBookCreate();
- }
- //取得本地所有聯絡人記錄
- if (tmpAddressBook==nil) {
- return ;
- };
- NSArray* tmpPeoples = (NSArray*)ABAddressBookCopyArrayOfAllPeople(tmpAddressBook);
- for(id tmpPerson in tmpPeoples)
- {
- //獲取的聯絡人單一屬性:First name
- NSString* tmpFirstName = (NSString*)ABRecordCopyValue(tmpPerson, kABPersonFirstNameProperty);
- NSLog(@"First name:%@", tmpFirstName);
- [tmpFirstName release];
- //獲取的聯絡人單一屬性:Last name
- NSString* tmpLastName = (NSString*)ABRecordCopyValue(tmpPerson, kABPersonLastNameProperty);
- NSLog(@"Last name:%@", tmpLastName);
- [tmpLastName release];
- //獲取的聯絡人單一屬性:Nickname
- NSString* tmpNickname = (NSString*)ABRecordCopyValue(tmpPerson, kABPersonNicknameProperty);
- NSLog(@"Nickname:%@", tmpNickname);
- [tmpNickname release];
- //獲取的聯絡人單一屬性:Company name
- NSString* tmpCompanyname = (NSString*)ABRecordCopyValue(tmpPerson, kABPersonOrganizationProperty);
- NSLog(@"Company name:%@", tmpCompanyname);
- [tmpCompanyname release];
- //獲取的聯絡人單一屬性:Job Title
- NSString* tmpJobTitle= (NSString*)ABRecordCopyValue(tmpPerson, kABPersonJobTitleProperty);
- NSLog(@"Job Title:%@", tmpJobTitle);
- [tmpJobTitle release];
- //獲取的聯絡人單一屬性:Department name
- NSString* tmpDepartmentName = (NSString*)ABRecordCopyValue(tmpPerson, kABPersonDepartmentProperty);
- NSLog(@"Department name:%@", tmpDepartmentName);
- [tmpDepartmentName release];
- //獲取的聯絡人單一屬性:Email(s)
- ABMultiValueRef tmpEmails = ABRecordCopyValue(tmpPerson, kABPersonEmailProperty);
- for(NSInteger j = 0; ABMultiValueGetCount(tmpEmails); j++)
- {
- NSString* tmpEmailIndex = (NSString*)ABMultiValueCopyValueAtIndex(tmpEmails, j);
- NSLog(@"Emails%d:%@", j, tmpEmailIndex);
- [tmpEmailIndex release];
- }
- CFRelease(tmpEmails);
- //獲取的聯絡人單一屬性:Birthday
- NSDate* tmpBirthday = (NSDate*)ABRecordCopyValue(tmpPerson, kABPersonBirthdayProperty);
- NSLog(@"Birthday:%@", tmpBirthday);
- [tmpBirthday release];
- //獲取的聯絡人單一屬性:Note
- NSString* tmpNote = (NSString*)ABRecordCopyValue(tmpPerson, kABPersonNoteProperty);
- NSLog(@"Note:%@", tmpNote);
- [tmpNote release];
- //獲取的聯絡人單一屬性:Generic phone number
- ABMultiValueRef tmpPhones = ABRecordCopyValue(tmpPerson, kABPersonPhoneProperty);
- for(NSInteger j = 0; j < ABMultiValueGetCount(tmpPhones); j++)
- {
- NSString* tmpPhoneIndex = (NSString*)ABMultiValueCopyValueAtIndex(tmpPhones, j);
- NSLog(@"tmpPhoneIndex%d:%@", j, tmpPhoneIndex);
- [tmpPhoneIndex release];
- }
- CFRelease(tmpPhones);
- }
- //釋放記憶體
- [tmpPeoples release];
- CFRelease(tmpAddressBook);
- }
解釋下程式碼:由於ios6.0系統的升級,對客戶隱私有了一個較大的提示。
以前
- tmpAddressBook =ABAddressBookCreate();這樣就可以讀取了,但是現在要做一個判斷了。可以具體看看程式碼。
- 把通訊錄取出來放在一個array裡面。這樣你就可以對陣列進行你的要求了。
備註:
蘋果中文語言貌似有點問題。ios6.0 會提示你的app訪問日曆。。。。
然後網上查了下資料。可以參照微信訪問通訊錄的形式,給客戶一個提示
他是在plist中 新增一項在XCode裡顯示的是Privacy - Contacts Usage Description。後面的string就是你要想提示的文字內容
“Privacy - Location Usage Description”。這個是定位位置提示。其他類似。
備註二:
分享一個測試經驗,也是從網上看到的。
一把蘋果的app訪問位置或者通訊錄,第一次都會有一個提示讓你選擇。
但是第二次及以後,即時刪掉,也不會再出現了。
如果想再次出現,可以 設定-通用-還原-還原位置與隱私
這樣你再次點選你的app就會再次出現了。
相關文章
- 訪問通訊錄 適配iOS7iOS
- 友好訪問許可權篇:訪問語音、相簿、通訊錄----iOS訪問許可權iOS
- iOS - Contacts 通訊錄iOS
- IOS 開發筆記2iOS筆記
- iOS開發初學者記錄iOS
- IOS——通訊錄操作(適用於IOS6)iOS
- 訪問手機通訊錄
- iOS仿微信小視訊功能開發優化記錄iOS優化
- iOS平時筆記記錄iOS筆記
- iOS學習筆記49 Swift(九)訪問控制iOS筆記Swift
- iOS開發備忘筆記 (3)iOS筆記
- iOS開發備忘筆記 (2)iOS筆記
- 隱形通訊錄:全新iOS通訊錄應用概念設計iOS
- iOS開發筆記(三):訊息傳遞與轉發機制iOS筆記
- iOS開發 AVFoundation 自定義視訊錄製iOS
- iOS開發筆記(一):記憶體管理iOS筆記記憶體
- iOS開發:音訊播放、錄音、視訊播放、拍照、視訊錄製iOS音訊
- Bitdefender:調查顯示19%的iOS應用未經允許訪問了通訊錄iOS
- iOS攻防:如何竊取使用者的通訊錄資訊iOS
- iOS開發筆記— 資料庫、Crash、記憶體問題分析iOS筆記資料庫記憶體
- iOS開發即時通訊環境搭建-XMPPiOS
- ios 基礎問題記錄iOS
- 【iOS開發】ViewController減負記錄iOSViewController
- ios微信小程式 BLE藍芽通訊開發介面UI卡頓問題iOS微信小程式藍芽UI
- iOS獲取通訊錄聯絡人資訊iOS
- iOS開發系列--音訊播放、錄音、視訊播放、拍照、視訊錄製(轉)iOS音訊
- iOS開發筆記(七):深入理解 AutoreleaseiOS筆記
- iOS-Socket開發學習筆記-1iOS筆記
- iOS VR視訊開發iOSVR
- iOS開發常用小技巧記錄(持續更新)iOS
- iOS訊息轉發小記iOS
- iOS筆記iOS筆記
- iOS開發企業版ipa分發(In House模式)記錄iOS模式
- iOS開發備忘筆記 (持續更新中)iOS筆記
- iOS開發筆記(五):UIScrollView實現原理iOS筆記UIView
- FFmpeg開發筆記(六)如何訪問Github下載FFmpeg原始碼筆記Github原始碼
- iOS開發訊息推送原理iOS
- iOS開發 iOS整合FFmpeg及視訊格式轉碼iOS