【问题标题】:iPhone address book external change call backiPhone通讯录外部变更回调
【发布时间】:2011-04-15 08:17:47
【问题描述】:

我正在使用本机通讯录开发应用程序。我已经注册了一个回调,以便在地址簿外部更改时接收通知。

ABAddressBookRegisterExternalChangeCallback(myAddrrbook, changefunction, self)

我的应用程序可以在 AddressBook 中创建新记录,为此我正在使用 ABNewPersonViewController 这样:

ABNewPersonViewController *controller = [[ABNewPersonViewController alloc] init];

controller.addressBook = myAddrrbook;

问题是,当我使用自己的应用程序时,我仍然会收到通知,就像它在其他地方发生了变化一样。 但是当我在模拟器上运行时,一切都是OK,当我添加联系人时没有发送任何通知。 如何避免在设备上收到通知?

有人遇到过这样的问题吗?

【问题讨论】:

    标签: iphone addressbook


    【解决方案1】:

    每当任何应用程序(包括您的应用程序)修改设备地址簿时,都会调用回调。根据 Apple 文档:

    ABAddressBookRegisterExternalChangeCallback

    注册回调以接收通讯簿时的通知 数据库已修改。

    (发现于the apple developer site

    在这种情况下,回调中的“外部”一词可能最好被认为是“设备自己的地址簿处理代码外部”,而不是“我的应用程序外部”

    据我所知,过滤掉您的应用所做更改的唯一方法是在本地进行任何更改之前设置一个标志,然后在回调中检查该标志(尽管这可能会出现竞争条件,但它应该在大多数用例中,这不是 iPhone 上的主要问题)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-12
      • 1970-01-01
      • 2012-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多