- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我在使用 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/
谁能帮我解决这个问题?我有一个 Tomcat 和简单的 JSF 应用程序:https://github.com/gooamoko/jsfbilling/ .当我在 Tomcat 上运行应用程序时,它运
我有两个这样的域类,第一个是 Manager : package com.mnm class Manager { String name; static hasMany = [ pro
当我运行以下代码时,打印输出似乎不正确。 void thread_Calc(int *pos) { printf("recieved %d\n", *pos); sig = -1; man
这个问题在这里已经有了答案: How to access a local variable from a different function using pointers? (10 个答案) 关闭
我编写了一个程序,其中列表构建器方法返回 IEnumerable of string,其中包括大量字符串(100 万个项目),我将其存储在 List of string 中,然后它将所有项目附加到 中
我正在尝试编写一个 IRC 类型的聊天客户端,它具有可以连接到服务器的客户端。我试图让它在本地 atm 上工作(使用 FIFOS 而不是套接字)。 我遇到了以下我似乎无法解决的问题: 接受新的客户端连
我的一个 cronjobs 每天发送一封电子邮件 35 6 * * * cd $EZPUBLISHROOT && $PHP runcronjobs.php -q 2>&1 我停止使用 cron sud
我使用 WPF 打印路径来处理在我们的应用程序中创建的大型图表。整个图表由视觉效果组成。 所谓的“DesignerPaginator”对图表进行分页(非常简单)。 从这一点来说,我做了以下三件事: -
我尝试在更新之前跟踪系统应用程序并使用: public static boolean isSystemApplication(Context ctx, IContent content) {
我在这里附上了一个查询分析结果,https://explain.depesz.com/s/x9BN 这是查询 EXPLAIN ANALYZE SELECT branche
我正在做一个 CXF(spring) 项目 (HUB)。部署后,我可以看到肥皂和休息服务列表,我通过两个地址打开它。一种是使用本地主机,第二种是使用我电脑的 ip。所以我得到了这些输出。 使用本地主机
这是一个 AnyHashable 不支持枚举转换的简单案例。 enum testEnum: String { case Test } let myObject: AnyHashable = t
我的主要目标是比较存储在数据库和 XLSX 文件中的数据。 为此,我按以下方式创建了两个列表: private class ProductList { public string produc
我从 CMake 3.6 更新到任何最新版本 (3.12.0-rc2),现在我的一个程序无法编译。 奇怪的是,错误消息显示了标准库本身中的 undefined symbol 。这是错误消息: Unde
我希望将我的自定义对话框动画化为从特定点出现,但我无法为对话框设置动画。 该对话框是一个基本的 RelativeLayout,设置为 extends Dialog 类中的布局。 正如这里的一些答案所建
我已经在这个论坛上调查过很多类似的问题,但似乎没有一个能解决我的问题。 我会在底部列出我在这个论坛上看到的一些问题页面,但让我先谈谈我对这个问题的看法。 我正在使用 codeigniter v 2.x
我正在尝试在 RHEL 7 上启动一个 docker-compose 项目作为 systemd 服务。这是我的 systemd 脚本 (/etc/systemd/system/wp.service):
这个问题已经有答案了: "Notice: Undefined variable", "Notice: Undefined index", "Warning: Undefined array key",
我正在尝试在 RHEL 7 上启动一个 docker-compose 项目作为 systemd 服务。这是我的 systemd 脚本 (/etc/systemd/system/wp.service):
此问题出现在my last question here之后。我想将每个按钮聚焦和失去焦点背景设置为主菜单(ContentPane 即 JPanel)下方的背景颜色,因此按钮看起来像选项卡。它在不同的环
我是一名优秀的程序员,十分优秀!