6

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

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

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

Flock(以及可能的其他应用程序)如何做到这一点的任何想法?

4

2 回答 2

7

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

在唤醒时,您的应用程序将进入后台并给予少量时间来处理位置数据

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

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

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

于 2013-01-12T06:02:29.107 回答
1

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

Apple 照片框架参考

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

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

看来您可以使用 PHPhotoLibrary 单例来registerChangeObserver:在您的类(采用PHPhotoLibraryChangeObserver 协议)上从photoLibraryDidChange: 方法接收PHChange对象

于 2015-07-01T22:27:26.337 回答