iOS 通信录编程,监听系统通信录更动

监听通信录更换

顾客端代码必要如此完结:

/*
 移除注册函数
 */
-(void)dealloc{
        ABAddressBookUnregisterExternalChangeCallback(_addressBook, ContactsChangeCallback, nil);
}
/*
 注册回调函数
 */
- (id)init {
    self = [super init];
    [self addressBookHandle];
    ABAddressBookRegisterExternalChangeCallback(_addressBook, ContactsChangeCallback, nil);

    return self;
}
/*
 回调函数,实现自己的逻辑。
 */
void ContactsChangeCallback (ABAddressBookRef addressBook,
                                                       CFDictionaryRef info,
                                                       void *context){

    NSLog(@"ContactsChangeCallback");
}

_addressBook是报纸发表录句柄

监听法规:

监听系统通讯录变更。当App活跃(前台+后台包活时期)的时候,当通信录修正的时候,会选拔布告

当App不活跃的时候(挂起的时候),App收不到公告;而是,当App到前台的时候接到延迟的布告。

通信录编制程序,监听系统通信录更换 监听通信录改造客商端代码须要如此完成: /* 移除注册函数 */-(void)dealloc{
ABAddressBookUnregisterExternal…

iOS通信录开荒
Contacts
Framework

ABAddressBook
和ABAddressBookUI是iOS9.0在此以前运用获取联系人音信的.iOS9.0事后,苹果推出了新的框架Contact和ContactUI.
AB是选取C写的,调用方法全部是C的函数,而CN是用OC写的,调用方法简单.

前言

1.ABAddressBook 和ABAddressBookUI

ABAddressBookUI是包裹的ABAddressBook API,用来操作数据库联系人音信.

a.ABPeoplePickerNavigationController 体现联系人列表;

b.ABPersonViewController,浮现传入的peoson属性,通过安装属性决定是或不是编辑;

c.ABNewPersonViewController
增加贰个新的person,不过该VC必得投入到Navi下,所以供给模态推出该视图;

d.ABUnknownPersonViewController
使用当前数据库内联系人,成立一个新的Person.

以上多个VC都有独家的代理方法,管理未来的专业.

也得以直接行使ABAddressBook API来操香港作家联谊会系人新闻

a. 加多关系人,增多联系人在此以前决断联系人是还是不是留存:

图片 1

判断增加的联系人是还是不是留存

图表中只剖断了关联人姓名,能够几个属性相同的时候开展推断,来决定是还是不是业已增加.

*
*

图片 2

增添关系人

调换人的少数质量,eg:电话号码,邮箱等都以足以填充几个,所以需供给使用多值属性.

b.删除Person

图片 3

剔除联系人

iOS通信录框架有AddressBook,AddressBookUI,Contacts,ContactsUI.
iOS9 AddressBook,AddressBookUI不推荐使用了,用Contacts,ContactsUI代替。

2.Contact和ContactUI

与ABAddressBookUI同样,ContactUI也是苹果提供的操香港作家联谊会系人消息的短平快情势.

ContactUI中独有七个调节器,CNContactPickerViewController和CNContactViewController,

a. CNContactPickerViewController 体现联系人列表;

b. CNContactViewController 提供如下两种初阶化方法,与AB功能相通

       +
(instancetype)viewControllerForContact:(CNContact*)contact;

       +
(instancetype)viewControllerForUnknownContact:(CNContact*)contact;

       +
(instancetype)viewControllerForNewContact:(nullableCNContact*)contact

a. 使用Contact API加多联络人, 删除联系

图片 4

判断联系人是还是不是存在

封存联系人

图片 5

保留联系人

delete联系人

图片 6

删除有些联系人

下面分 AddressBook和 Contacts来讲

AddressBook

步骤:

1.导入以下三个类,设ABPeoplePickerNavigationControllerDelegate

#import <AddressBook/AddressBook.h>
#import <AddressBookUI/AddressBookUI.h>

2.获得授权景况,遵照差别授权情形作出差别影响

- (void)requestContactAuthorBeforeSystemVersion9{

    ABAuthorizationStatus authStatus = ABAddressBookGetAuthorizationStatus();

    if (authStatus == kABAuthorizationStatusNotDetermined)
    {

        //获取授权
        ABAddressBookRef addressBook = ABAddressBookCreate();
        ABAddressBookRequestAccessWithCompletion( addressBook, ^(bool granted, CFErrorRef error) {

            if (granted)
            {
                [self openContact];
            }
            else
            {
                [self showAlertViewAboutNotAuthorAccessContact];
            }

        });


    }
    else if(authStatus == kABAuthorizationStatusRestricted)
    {
        NSLog(@"用户拒绝");
        [self showAlertViewAboutNotAuthorAccessContact];
    }
    else if (authStatus == kABAuthorizationStatusDenied)
    {
        NSLog(@"用户拒绝");
        [self showAlertViewAboutNotAuthorAccessContact];
    }
    else if (authStatus == kABAuthorizationStatusAuthorized)
    {
        //打开相册
        [self openContact];
    }


}

相关文章