2011-06-03 73 views
2

是否有可能在應用程序中檢測到已刪除地址簿條目(例如來自iOS電話本本身)?已刪除的條目未被檢測到 - iOS

我有一個應用程序需要將iOS地址簿數據庫的本地副本與手機中的地址簿同步。該應用程序在支持它的iOS上支持後臺模式。

測試在後臺能夠iOS的環境我的問題的應用程序如下:
的應用程序不會檢測已在系統地址簿中被刪除,直到應用程序完全封閉的入口(的iOS 4殺死它跳板上的紅色X)。如果應用程序簡單地發送到後臺,則從系統地址簿中刪除一個聯繫人,然後應用程序再次將該應用程序帶到前臺,刪除的條目ID的函數ABRecordRef()不會返回NULL,如同條目所期望的那樣它不再存在,它會返回該條目,就好像它從未從系統地址簿數據庫中刪除一樣。

如上所述 - 如果應用程序是完全終止並重新啓動,則刪除的ID的ABRecordRef()按預期工作 - 它返回NULL。有沒有什麼辦法可以檢測到這個刪除的條目,而不必等待應用程序被殺死並重新啓動?

+0

請分享,如果喲得到了這個答案。 – sathiamoorthy 2014-09-18 06:43:44

回答

0

是的。使用ABAddressBookRegisterExternalChangeCallback註冊地址簿更改,例如

// Your method called when the user has granted access to their address book data. 
- (void)accessGrantedForAddressBook 
{ 
    ABAddressBookRegisterExternalChangeCallback(sharedAddressBook, MyAddressBookExternalChangeCallback, (__bridge void *)(self)); 
} 

其中MyAddressBookExternalChangeCallback是您的回調函數。

0

我相信你每次刷新地址簿中的數據時都需要創建一個新的ABAddressBook。原因是這樣的:

您可能在地址簿的副本中添加,更新和刪除記錄,但尚未稱爲保存或還原。因此,如果系統(例如iOS中的聯繫簿應用程序)改變了地址簿中的內容,則無法自動獲取它們。

嘗試運行恢復或重新創建地址簿,它應該工作。