Почему CNContactStoreDidChangeNotification не имеет обратного вызова? - PullRequest
0 голосов
/ 29 августа 2018
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(addressBookDidChange:) name:CNContactStoreDidChangeNotification object:nil];

-(void)addressBookDidChange:(NSNotification*)notification{
    NSLog(@"change!!!");
}

Я регистрирую CNContactStoreDidChangeNotification в NSNotificationCenter , но когда приложение становится bg, контакт имеет некоторые изменения (например, добавление нового контакт), а затем приложение становится активным, метод регистрации не имеет обратного вызова (без «изменения» журнала).

P.S

Но когда я добавляю метод

ABAddressBookRegisterExternalChangeCallback(ABAddressBookCreate(), addressBookChandedCallback, nil);


static void addressBookChandedCallback(ABAddressBookRef ab, 
CFDictionaryRef info, void *context){`

NSLog(@"address change!!!");

}

Журнал:

изменение адреса !!!

изменение !!!

1 Ответ

0 голосов
/ 21 сентября 2018

Я считаю, что проблема в вашем коде, а не в фреймворке. Код, если вы поместите его в контроллер вида, должен выглядеть так:

-(void)viewWillAppear:(BOOL)animated {

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(addressBookDidChange:) name:CNContactStoreDidChangeNotification object:nil];
}

-(void)addressBookDidChange:(NSNotification*)notification
{
    //Handle event here...
    NSLog(@"change!!!");

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...