"Flock" iOS 应用是如何检测照片拍摄完成的?

6

Flock是一款相对较新的iOS应用程序,由Bump公司开发,具有一个有趣的功能。它可以在某些情况下知道其他应用程序拍摄了照片,以通知中心的方式通知用户,并要求用户将它们分享到相册中。当然还有其他有趣的功能,但我特别关注这个功能,因为我正在开发另一个应用程序。

我看不出API如何直接实现此功能。我仔细查看了通知API文档,发现应用程序确实可以注册以在未来的日期/时间向用户显示通知,从而在那个时间被用户打开...但我找不到任何系统通知,表明照片已经被拍摄。通知API还允许服务器生成通知,但再次强调,我不知道Flock的服务器端如何知道用户在不同的应用程序中何时拍照。

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

有没有想法,Flock(以及其他应用程序)是如何管理实现这一点的呢?


由于这里可能很少有人知道Flock应用程序是什么或做什么,因此您应该更好地描述您所指的功能/行为。 - rmaddy
我同意rmaddy的观点,我刚在应用商店搜索并下载了一个名为“flock”的应用程序,但该应用似乎没有所描述的功能。还有另一个名为“flock app”的应用程序,我认为这就是你所说的,但我不想创建帐户来查看。请发布更多详细信息以说明你所说的内容。 - Mick MacCallum
2个回答

7
几天观察该应用的行为后(以及大量搜索和碰巧遇到关于文件锁定的深奥讨论),我强烈怀疑它的工作原理:Flock只是注册了显著变化位置服务,当用户更改位置时,它会唤醒应用程序并提供一个小的处理窗口。文档说明如下:
在唤醒时,您的应用程序被放入后台,并被赋予一小段时间来处理位置数据。
我怀疑Flock在那时检查图像库,并在添加照片时触发本地通知。这与我的经验相符,即离开家后约10分钟,Flock会给我发送本地通知... 对于我来说,这正是最糟糕的时间整理我的照片并分享它们到相册中(也许我应该更经常使用公共交通)。

这里还有一些有趣的SO答案这里, 这里这里……但大部分讨论本地通知(只能为特定时间安排通知,并始终在该时间提醒用户,因此不是真正的后台任务)或由用户关闭的应用程序提供的600秒后台处理窗口(这显然不适合每天运行一次后台任务之类的目的)。

Bump开发人员也提供了有关该应用程序底层架构的一些线索这里


1
我个人没有使用过这个框架,但在为客户做研究时,我偶然发现了这份文档。 Apple Photos Framework Reference 在“特性和概念”部分中有一个名为“更改观察”的条目,其中写道:
利用共享的PHPhotoLibrary对象为您获取的照片实体注册更改处理程序。当另一个应用程序或设备更改资产或集合中的资产列表的内容或元数据时,Photos会告诉您的应用程序。PHChange对象提供关于每个更改之前和之后对象状态的信息,语义使得更新集合视图或类似界面变得容易。

看起来你可以使用PHPhotoLibrary单例在你的一个类上注册ChangeObserver(该类采用PHPhotoLibraryChangeObserver协议)以接收PHChange对象从photoLibraryDidChange:方法


你认为 PHPhotoLibrary 会在后台通知不活跃的应用程序有任何机会吗?也许应用程序还应该注册其他服务/功能来实现这一点?只是在调查可能的解决方案。 - vir us

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接