应用未运行时检查 JSON 内容的变化

Posted

技术标签:

【中文标题】应用未运行时检查 JSON 内容的变化【英文标题】:Check for changes of JSON contents when app is not running 【发布时间】:2013-03-18 22:17:35 【问题描述】:

应用执行 JSON 请求,序列化结果并在每次应用启动时将其加载到 tableView 中。

我正在寻找一种解决方案,该解决方案还可以在应用未运行时检查 JSON 提要的更新,并通过应用图标上的红色通知徽章通知用户。

这是否仅适用于推送通知?这可能是个问题,因为服务器上不可能有 SSL 证书,并且当内容更改(内容在 mysql 数据库中)时,服务器将无法通过 JSON 发送特定通知。

【问题讨论】:

【参考方案1】:

是的,你真的不能那样做。我认为如果你不想实现推送(这不是太有,但肯定会花费你超过一个小时......),我认为最好的方法是创建 JSON 内容的 MD5 散列并散列新的 JSON 启用快速准确地确定某事是否发生了变化。

如果您不想推送,您可能会考虑的另一件事是电子邮件附件。它避免了推动,但它并不是特别优雅。这个想法是您将您的应用程序注册为处理您发送的附件类型,然后当收到电子邮件并且用户点击您的应用程序打开的电子邮件附件时。我用过这个答案: How do I associate file types with an iPhone application? 这样做并且效果很好。

【讨论】:

我认为在这种情况下电子邮件的想法不会是一个选项,因为用户是未知/未定义的,他们不应该在那里注册电子邮件。对 JSON 内容进行散列以确定更新的确切含义是什么?如果你能提供一个例子,那就太好了。 JSON 服务器上的 SSL 证书还需要吗? 只是一个 MD5 或 SHA 或类似的散列函数,它生成一个(实际上)唯一的字符串,给定一些文本作为输入。如果您获得 100k 的 JSON 文本并对其进行哈希处理,那么一段时间后您将获得 100k 的 JSON 文本并且哈希计算为相同的结果,那么您可以放心地忽略第二个 JSON 字符串,因为它与您已经拥有的信息相同 - 而您不必将其转换为可可对象并解析所有值即可找到它。【参考方案2】:

是的,这只能通过推送通知获得。

【讨论】:

以上是关于应用未运行时检查 JSON 内容的变化的主要内容,如果未能解决你的问题,请参考以下文章

当应用程序未运行时,使用推送通知的内容更新 SQLite

续集迁移未运行

NetworkExtension 监控 WiFi 网络变化,即使应用程序未运行

当应用程序未运行(终止/终止)时,如何保持核心位置和核心蓝牙运行?

已安排本地通知,但未在挂起和未运行模式下传递

清单中存在时未授予运行时权限(Android)[重复]