Уведомление о внешнем обратном вызове iPhone AddressBook? - PullRequest
2 голосов
/ 15 июля 2011

В viewDidLoad я подписался на уведомления для получения уведомлений о внешнем обратном вызове.Я не знаю, почему я не получаю уведомления в своем приложении, если я что-то изменил в своих контактах iphone.

Я делаю так:

ab=ABAddressBookCreate();
ABAddressBookRegisterExternalChangeCallback(ab, MyAddressBookExternalChangeCallback, self);

И я определил это втот же контроллер

void MyAddressBookExternalChangeCallback ( ABAddressBookRef addressBook, CFDictionaryRef info, void *context ) {
 [((TGTextsInboxController *) context) addressBookHasChanged];
}

Как я могу отладить это?Я пытался таким образом в симуляторе.

  1. Я открыл свое приложение до TGTextsInboxController viewController
  2. Я нажал кнопку «Домой», мое приложение перешло в фоновый режим
  3. nТеперь я открыл контакты iPhone, изменил номер телефоналюбой человек.
  4. Снова откройте приложение из фона на передний план.
  5. Уведомления не были отражены.Ни один указатель дегггера не попал в этот метод "MyAddressBookExternalChangeCallback"

Что-то не так?

Ответы [ 2 ]

0 голосов
/ 08 августа 2011

Используйте адресную книгу обратного вызова.

void ABAddressBookRegisterExternalChangeCallback (
   ABAddressBookRef addressBook,
   ABExternalChangeCallback callback,
   void *context
);

Мой пример - регистрация (после создания addressBookRef)

ABAddressBookRegisterExternalChangeCallback(addressBook, addressBookChanged, self);

Мой Smaple - что-то сделать и отменить регистрацию

void addressBookChanged(ABAddressBookRef abRef, CFDictionaryRef dicRef, void *context) {

    NSLog(@"!!!!!Address Book Changed!");

    //Do Something You Need. (Recreate addressbook or Reload UITableView data.)

    ABAddressBookUnregisterExternalChangeCallback(abRef, addressBookChanged, context);
}

Мой ответ: Адресная книга Iphone

0 голосов
/ 15 июля 2011

Проблема решена:

Я выпускал CFRelease(ab); после уведомления. Как только я прокомментировал эту строку. Я могу получать уведомления.

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