【问题标题】:How does the 'Flock' iOS app detect when photos have been taken?'Flock' iOS 应用程序如何检测照片的拍摄时间?
【发布时间】:2012-12-25 11:52:24
【问题描述】:

FlockBump 的人推出的一款相当新的 iOS 应用程序,它有一个有趣的功能。它以某种方式知道照片何时被另一个应用程序拍摄,通知用户(以通知中心的方式),并要求用户将它们分享到相册中。当然还有其他有趣的功能,但我对我正在开发的另一个应用程序的这个功能特别感兴趣。

我看不出 API 如何直接促进这一点。我仔细查看了通知 API 文档,应用程序当然可以注册以在未来的日期/时间向用户显示通知,从而在那时被用户打开......但我找不到任何系统通知拍摄照片时。通知 API 还允许服务器生成通知,但我不知道 Flock 的服务器端如何知道用户何时在不同的应用程序中拍照。

我几天前安装了该应用程序,但我似乎只在拍照后才收到通知。它似乎不仅仅是一个日常提醒。

您知道 Flock(以及可能的其他应用程序)如何做到这一点吗?

【问题讨论】:

  • 由于这里可能很少有人知道 Flock 应用程序是什么或做什么,因此您确实应该更好地描述您所指的功能/行为。
  • 我同意 rmaddy,我刚刚搜索了 App Store 并下载了名为“flock”的应用程序,该应用程序似乎不需要描述功能。还有另一个叫做“flock 应用程序”的应用程序,我认为这就是您所说的,但我不愿意创建一个帐户只是为了看看。请发布更多详细信息以证明您在说什么。

标签: ios notifications flock


【解决方案1】:

在观察了应用程序的行为几天后(以及大量的谷歌搜索和关于文件锁定的神秘讨论),我强烈怀疑它是如何工作的:Flock 只是注册了Significant-Change Location Service,它唤醒了该应用程序并在用户更改位置时提供一个小的处理窗口。文档说:

在唤醒时,您的应用会进入后台并留出少量时间来处理位置数据

我怀疑 Flock 正在检查图片库,如果添加了照片,则会触发本地通知。这与我的经验相吻合,即 Flock 在我离开家约 10 分钟后给我一个本地通知......如果任何 Bump/Flock 开发人员正在阅读这篇文章,这对我来说是整理照片的最糟糕时间并在相册中分享(也许我应该更频繁地使用公共交通工具)。

还有一些其他有趣的 SO 答案 hereherehere... 但在大多数情况下,他们讨论的是本地通知(只能安排在特定时间,并且总是会提醒用户那时,所以不是真正的后台任务)或为已被用户关闭的应用程序提供的 600 秒后台处理窗口(这当然是后台任务,但显然不适合运行后台的目的每天一次或类似的任务)。

Bump 开发人员还提供了一些关于应用程序底层架构的线索here

【讨论】:

    【解决方案2】:

    我没有亲自使用过这个框架,但是在为客户做研究时我确实偶然发现了这个文档。

    Apple Photos Framework Reference

    在功能和概念下有一个“更改观察”条目,其中指出:

    使用共享的 PHPhotoLibrary 对象为您获取的照片实体注册更改处理程序。每当另一个应用程序或设备更改资产的内容或元数据或集合中的资产列表时,照片都会告诉您的应用程序。 PHChange 对象在每次更改之前和之后提供有关对象状态的信息,其语义使更新集合视图或类似界面变得容易。

    看来您可以在您的一类(采用PHPhotoLibraryChangeObserver protocol)上使用PHPhotoLibrary 单例registerChangeObserver:photoLibraryDidChange: method 接收PHChange 对象

    【讨论】:

    • 您认为 PHPhotoLibrary 是否有可能在后台通知非活动应用程序的更改?也许应用程序还应该注册任何其他服务/功能来实现这一点?只是调查可能的解决方案
    猜你喜欢
    • 2016-04-11
    • 2013-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多