{"id":18387203,"url":"https://github.com/jkpang/ppgetaddressbook","last_synced_at":"2025-04-05T16:08:39.913Z","repository":{"id":49854171,"uuid":"65918687","full_name":"jkpang/PPGetAddressBook","owner":"jkpang","description":"一句代码极速获取按A~Z分组精准排序的通讯录联系人 OC版( 已处理姓名所有字符的排序问题 ) ","archived":false,"fork":false,"pushed_at":"2019-02-20T01:47:37.000Z","size":4615,"stargazers_count":527,"open_issues_count":14,"forks_count":92,"subscribers_count":9,"default_branch":"master","last_synced_at":"2024-03-15T15:44:41.544Z","etag":null,"topics":["address-book","cocoapods","contact","ios","objective-c"],"latest_commit_sha":null,"homepage":"","language":"Objective-C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jkpang.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-08-17T15:23:27.000Z","updated_at":"2023-06-20T07:36:28.000Z","dependencies_parsed_at":"2022-09-01T08:40:07.502Z","dependency_job_id":null,"html_url":"https://github.com/jkpang/PPGetAddressBook","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jkpang%2FPPGetAddressBook","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jkpang%2FPPGetAddressBook/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jkpang%2FPPGetAddressBook/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jkpang%2FPPGetAddressBook/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jkpang","download_url":"https://codeload.github.com/jkpang/PPGetAddressBook/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247361691,"owners_count":20926643,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["address-book","cocoapods","contact","ios","objective-c"],"created_at":"2024-11-06T01:25:19.296Z","updated_at":"2025-04-05T16:08:39.895Z","avatar_url":"https://github.com/jkpang.png","language":"Objective-C","funding_links":[],"categories":[],"sub_categories":[],"readme":"![image](https://github.com/jkpang/PPGetAddressBook/blob/master/Picture/PPGetAddressBook.png)\n\n![](https://img.shields.io/badge/platform-iOS-red.svg)  ![](https://img.shields.io/badge/language-Objective--C-orange.svg) ![](https://img.shields.io/cocoapods/v/PPGetAddressBook.svg?style=flat) ![](https://img.shields.io/cocoapods/dt/PPGetAddressBook.svg) ![](https://img.shields.io/badge/license-MIT%20License-brightgreen.svg)  [![](https://img.shields.io/badge/weibo-jkpang--%E5%BA%9E-red.svg)](http://weibo.com/5743737098/profile?rightmod=1\u0026wvr=6\u0026mod=personinfo\u0026is_all=1)\n\n* PPGetAddressBook对AddressBook框架(iOS9之前)和Contacts框架(iOS9之后)做了对应的封装处理;\n\n* 支持一句代码获取按联系人姓名首字拼音A~Z排序(*重点:已处理姓名所有字符的排序问题,排序更准确!*);\n* 支持一句代码获取原始顺序的联系人,未分组,可自行处理;\n* 已对号码中的\"+86\",\"-\",\"()\",空号和联系人姓名空白做了处理,不会出现因为数据源NULL导致程序crash的问题;\n* 对姓\"长\",\"沈\",\"厦\",\"地\",\"冲\"多音字进行优化处理.\n\n### 新建 PP-iOS学习交流群 : 323408051 有关于PP系列封装的问题和iOS技术可以在此群讨论\n\n[简书地址](http://www.jianshu.com/p/b51a6125bcff) ; [codeData 地址](http://www.codedata.cn/cdetail/Objective-C/Demo/1471619974294285)\n\n#### 如果你需要Swift版本,请戳: https://github.com/jkpang/PPGetAddressBookSwift\n\n![image](https://github.com/jkpang/PPGetAddressBook/blob/master/Picture/AddressBook.mov.gif)\n\n## Requirements 要求\n* iOS 7+\n* Xcode 8+\n\n## Installation 安装\n### 1.手动安装:\n`下载DEMO后,将子文件夹PPGetAddressBook拖入到项目中, 导入头文件PPGetAddressBook.h开始使用`\n### 2.CocoaPods安装:\nfirst\n`pod 'PPGetAddressBook',:git =\u003e 'https://github.com/jkpang/PPGetAddressBook.git'`\n\nthen\n`pod install或pod install --no-repo-update`\n\n如果发现pod search PPGetAddressBook 不是最新版本，在终端执行pod setup命令更新本地spec镜像缓存(时间可能有点长),重新搜索就OK了\n## Usage 使用方法\n****注意, 在iOS 10系统下必须在info.plist文件中配置获取隐私数据权限声明 : [兼容iOS 10：配置获取隐私数据权限声明\n](http://www.jianshu.com/p/616240463a7a)***\n### 一、首先必须要请求用户是否授权APP访问通讯录的权限(建议在APPDeletegate.m中的didFinishLaunchingWithOptions方法中调用)\n\n```objc\n     //请求用户获取通讯录权限\n    [PPGetAddressBook requestAddressBookAuthorization];\n```\n### 二、获取通讯录\n### 1.获取按联系人姓名首字拼音A~Z排序(已处理姓名所有字符的排序问题),一句话搞定!\n\n```objc\n    //获取按联系人姓名首字拼音A~Z排序(已经对姓名的第二个字做了处理)\n    [PPGetAddressBook getOrderAddressBook:^(NSDictionary\u003cNSString *,NSArray *\u003e *addressBookDict, NSArray *nameKeys) {\n        //addressBookDict: 装着所有联系人的字典\n        //nameKeys: A~Z拼音字母数组;\n        //刷新 tableView       \n        [self.tableView reloadData];\n    } authorizationFailure:^{\n        NSLog(@\"请在iPhone的“设置-隐私-通讯录”选项中，允许PPAddressBook访问您的通讯录\");\n    }];\n\n   \n```\n### 2.获取原始顺序的联系人模型,未分组,一句话搞定!\n\n```objc\n    //获取没有经过排序的联系人模型\n    [PPGetAddressBook getOriginalAddressBook:^(NSArray\u003cPPPersonModel *\u003e *addressBookArray) {\n       //addressBookArray:原始顺序的联系人模型数组\n       \n       //刷新 tableView       \n        [self.tableView reloadData];\n    } authorizationFailure:^{\n       NSLog(@\"请在iPhone的“设置-隐私-通讯录”选项中，允许PPAddressBook访问您的通讯录\");\n    }];\n    \n```\n\n如果你有更好的实现方法,希望不吝赐教!\n#### 你的star是我持续更新的动力!\n===\n## CocoaPods更新日志\n* 2016.12.01(tag:0.2.8)--修复在iOS 9之前系统中编辑联系人不会及时同步的bug\n* 2016.10.30(tag:0.2.7)--1.对姓\"长\",\"沈\",\"厦\",\"地\",\"冲\"多音字进行优化处理; 2.将'#'key值排列在A~Z的末尾!\n* 2016.10.08(tag:0.2.6)--读取联系人速度再次提升!\n* 2016.09.16(tag:0.2.5)--读取排序通讯录时性能提升3~6倍以及部分代码优化,推荐使用此版本及之后的版本\n* 2016.09.12(tag:0.2.2)--小细节优化\n* 2016.09.01(tag:0.2.1)--修复 当用户没有授权时程序卡死的Bug\n* 2016.08.26(tag:0.2.0)--将联系人排序的耗时操作放在子线程,大大优化程序的载入速度与体验\n* 2016.08.23(tag:0.1.2)--小细节优化\n* 2016.08.21(tag:0.1.1)--Pods初始化\n\n## 我的App \u003c-\u003e My APP\n- [PPHub](https://github.com/jkpang/PPHub-Feedback)：一个简洁漂亮的 GitHub iOS客户端 \u003c-\u003e A simple and beautiful GitHub iOS client   \n[![App_Store](https://github.com/jkpang/PPHub-Feedback/blob/master/Resource/Download_on_the_App_Store_135x40.svg)](https://itunes.apple.com/cn/app/PPHub%20For%20GitHub/id1314212521?mt=8)\n\n## 联系方式:\n* Weibo : [@jkpang-庞](http://weibo.com/5743737098/profile?rightmod=1\u0026wvr=6\u0026mod=personinfo\u0026is_all=1)\n* Email : jkpang@outlook.com\n* QQ群 : 323408051\n\n![PP-iOS学习交流群群二维码](https://github.com/jkpang/PPCounter/blob/master/PP-iOS%E5%AD%A6%E4%B9%A0%E4%BA%A4%E6%B5%81%E7%BE%A4%E7%BE%A4%E4%BA%8C%E7%BB%B4%E7%A0%81.png)\n\n## 许可证\nPPGetAddressBook 使用 MIT 许可证，详情见 LICENSE 文件。\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjkpang%2Fppgetaddressbook","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjkpang%2Fppgetaddressbook","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjkpang%2Fppgetaddressbook/lists"}