Flock是来自Bump的人的一个相当新的iOS应用程序,它有一个有趣的功能。它以某种方式知道其他应用程序何时拍摄照片,通知用户(以通知中心的方式),并要求用户将它们分享到相册中。当然还有其他有趣的功能,但我对我正在处理的另一个应用程序特别感兴趣。
我无法看到API如何直接促进这一点。我仔细查看了通知API文档,应用程序当然可以注册以在将来的日期/时间向用户显示通知,因此当时用户可以打开...但我找不到任何系统通知当拍照时。通知API还允许服务器生成的通知,但一次又一次,我不知道Flock的服务器端如何知道用户何时在不同的应用程序中拍摄照片。
我在几天前安装了应用程序,我似乎只在拍摄照片时收到通知。它似乎不仅仅是每日提醒。
有关Flock(以及可能的其他应用程序)如何设法执行此操作的任何想法?
答案 0 :(得分:7)
经过几天观察应用程序的行为(以及大量的Google搜索并进入关于文件锁定的神秘讨论),我强烈怀疑它是如何工作的:Flock只注册了Significant-Change Location Service,当用户更改位置时,它会唤醒应用程序并提供一个小的处理窗口。文档说:
在唤醒时,您的应用会被置于后台并获得少量时间来处理位置数据
我怀疑Flock正在检查图像库,并在添加照片时触发本地通知。这与我的经验一致,Flock给我一个本地通知〜离开家后10分钟...如果任何Bump / Flock开发者正在阅读这个,这是我整理照片的最糟糕的时间并在专辑中分享(也许我应该更频繁地使用公共交通工具)。
还有一些其他有趣的SO答案here,here和here ......但是大多数情况下他们会讨论本地通知(只能在特定时间安排,并且将始终提醒用户,因此不是真正的后台任务)或600秒的后台处理窗口提供给用户关闭的应用程序(这当然是后台任务,但显然不适合每天运行一次后台任务的目的或某些事情。)
Bump开发者还提供了应用程序here的基础架构的一些线索。
答案 1 :(得分:1)
我还没有亲自使用过这个框架,但在为客户进行研究时,我偶然发现了这个文档。
Apple Photos Framework Reference
在功能&概念中有" Change Observing" 的条目,其中说明:
使用共享的PHPhotoLibrary对象为您提取的照片实体注册更改处理程序。当其他应用或设备更改资产的内容或元数据或集合中的资产列表时,照片会告知您的应用。 PHChange对象提供有关每次更改之前和之后的对象状态的信息,其语义使得更新集合视图或类似界面变得容易。
您似乎可以使用PHPhotoLibrary单例来registerChangeObserver:对您的一类(采用PHPhotoLibraryChangeObserver protocol)来接收PHChange中的photoLibraryDidChange: method个对象