繁体   English   中英

未检测到已删除条目 - iOS

[英]Deleted Entries not being detected - iOS

是否可以从应用程序中检测到已删除的通讯簿条目(例如来自 iOS 电话簿本身)?

我有一个应用程序需要将 iOS 通讯簿数据库的本地副本与电话中的通讯簿同步。 该应用程序在支持它的 iOS 上支持后台模式。

在支持后台的 iOS 环境中测试应用程序我的问题如下:
在应用程序完全关闭之前,应用程序不会检测到系统地址簿中已删除的条目(iOS 4 用跳板中的红色 X 将其杀死)。 如果应用程序只是简单地发送到后台,则从系统通讯录中删除一个联系人,然后应用程序再次被带到前台 删除条目 id 的 function ABRecordRef() 不会像条目预期的那样返回 NULL它不再存在,它返回条目,就好像它从未从系统通讯簿数据库中删除一样。

如上所述 - 如果应用程序完全终止并重新启动,则已删除 id 的 ABRecordRef() 按预期工作 - 它返回 NULL。 有什么方法可以在不等待应用程序被杀死并重新启动的情况下检测到这个已删除的条目?

我相信每次刷新通讯簿中的数据时,您都需要创建一个新的 ABAddressBook。 原因是这样的:

您可能已在地址簿副本中添加、更新和删除记录,但尚未调用保存或恢复。 因此,如果系统(例如 iOS 内置在通讯录应用程序中)更改了通讯录中的内容,您将无法自动获取它们。

尝试运行 Revert 或重新创建地址簿,它应该可以工作。

是的。 使用ABAddressBookRegisterExternalChangeCallback注册对地址簿的更改,例如

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

其中MyAddressBookExternalChangeCallback是您的回调 function。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM