gpt4 book ai didi

ios - iOS kABPersonModificationDateProperty 的奇怪行为,似乎一直在更新

转载 作者:可可西里 更新时间:2023-11-01 05:55:51 25 4
gpt4 key购买 nike

我在使用 ABAddressBook 库的 iOS 应用程序中看到非常奇怪的行为。想知道是否有人可以让我深入了解后台发生的事情,或者我是否有我看不到的逻辑错误。

长话短说,我正在制作一个 VOIP 应用程序,它在很大程度上依赖于导入用户的联系人。我保留了这些也与推送通知结合使用的在线备份。

由于在手机上修改了它们,我需要向服务器发送更新请求以保持它们的准确性。问题是许多用户设备经常随机向服务器发送非常大的联系人 block 。一天会有 50 多个联系人,5 分钟后又是 10 个,然后一个月后才更新一个联系人。我问过几个 friend 的用户,他们不记得一夜之间修改了一半的地址簿。

我的代码非常简单,每次需要向服务器发送更新时,我都会存储一个 NSDate,例如添加、修改或删除。我知道有一个回调会在地址簿更新时触发,但这需要始终在内存中保留对地址簿的引用。我已经做了一些测试,如果应用程序崩溃或用户终止了应用程序,我会丢失所有更新。鉴于其后台运行的 VOIP 应用程序,我觉得人们可能会在某个场合杀死它以节省电池或其他任何东西。因此,出于这个原因,我遍历所有联系人,根据我记录的最后一个 NSDate 检查 kABPersonModificationDateProperty 属性。如果修改后的版本较新,我将开始更新,就像这样。

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setTimeStyle:NSDateFormatterMediumStyle];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];

NSDate *lastChecked = [dateFormatter dateFromString:[PListData readStringFromFile:@"lastContactsArchive"]];


CFDateRef modifyDate = ABRecordCopyValue(ref, kABPersonModificationDateProperty);
...
...
else if ([(__bridge NSDate*)modifyDate compare:lastChecked]==NSOrderedDescending) // if modified after last check, create new contact and update
{
...
}

我是否遗漏了什么,修改日期是否仅在更改姓名/电话号码/电子邮件等时更新?例如,当 iCloud 同步时,它们是否被修改?如果他们调用电话中的人,计数器会更新吗?等等

我已经尝试在 3 部手机上进行调试,并且所有的行为都符合我的预期。我真的在这里画了一个空白,服务器对我不满意,所以我们将不胜感激。

最佳答案

当 iphone 与 iCloud/CardDav/Gmail/Exchange 帐户同步联系人时,联系人也可能在后台更新。

请注意,它也可能在您的应用程序运行时发生,因此您应该订阅地址簿更新。

关于ios - iOS kABPersonModificationDateProperty 的奇怪行为,似乎一直在更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16715032/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com