在这个问题上我已经挣扎了很长一段时间。我有一个在 iPhone (>= iOS7) 上运行的应用程序,我需要选择用户拍摄的所有照片(当然是在请求相机访问权限之后),并在满足特定条件时上传它们。显然,由于用户是从相机应用程序而不是从我的应用程序内部拍照,所以当拍照时,我的应用程序是后台的,并且用户在拍照后并不总是重新打开应用程序。由于我没有在我的应用程序中使用 GPS/VoIP/Accessory,因此我没有在我的应用程序的 plist 中启用这些权限(我只启用了获取和通知,因为我使用了这些权限)。要知道用户拍摄了一张新照片,我尝试了两种不同的方法:(1)使用观察者和(2)从 ALAssetLibrary 检索最后一张照片,将最后一张照片的创建日期保存在内存中,并将其与检索到的最新照片进行比较。当应用程序在前台运行时,这两种方法都可以很好地工作(这意味着如果我唤醒我的应用程序并执行它们,我可以使用这两种方法中的任何一种正确获取图片),但我还没有找到一种方法来使这两种方法都能正常工作背景。在第一种情况下,观察者仅在应用程序处于前台时或前三分钟收到通知,如果我有任何长时间运行的任务正在运行(有 3 分钟的限制)。在第二种情况下,问题类似(我在长时间运行的后台任务上运行扫描,扫描 2 分钟后让它休眠,然后启动另一个后台任务,执行相同的操作);似乎即使我在另一个中生成多个后台任务,3 分钟的时间限制仍然在任务之间强制执行...... 我确信有一种方法可以实现这一点,因为我在 App Store 上看到至少有一个其他应用程序完全做到了这一点,没有任何特殊权限(VoIP/GPS/附件等)。任何人都有提示让我以正确的方式实现这一目标?提前致谢!