我开发了两个不同的应用程序

  • App1-启用了Healthkit。
  • App2-离子应用程序

  • App1任务:从Healthkit中读取存储在服务器中的数据。

    App2任务:从服务器检索存储的数据并显示。

    我使用openURLScheme从App1启动了App2。因此,App1在后台模式下运行,并且应该继续运行超过3分钟到一个小时。

    我尝试了以下方案:
    bgTask = self.applicationUI!.beginBackgroundTaskWithName("MyTask", expirationHandler: { () -> Void in
    
            self.applicationUI!.endBackgroundTask(self.bgTask!)
    
            self.bgTask = UIBackgroundTaskInvalid;
        })
    
        self.bgTask = UIApplication.sharedApplication().beginBackgroundTaskWithExpirationHandler({ () -> Void in
            self.monitorInBackground()
        })
    

    我收到错误消息: allowedBackgroundDuration:180.000000原因:finishTask

    接下来3分钟的扩展后台进程(在引入iOS 7之后,在iOS 7之前,该进程执行时间为10分钟)。

    注意:

    我希望使用APNS静默通知是可行的。但是我期望有比APNS更好的解决方案。

    最佳答案

    苹果在background execution in their documentation上有一个不错的部分。

    这样做的两种方法是静默通知(如您所建议)和后台获取。

    使用静默通知的“优点”是,只要用户在线,您就可以精确地控制何时发生。 (无论如何,它们可能都必须访问服务器。)但是,是的,这增加了很多复杂性。

    后台抓取效果很好,但是您无法对其进行控制。这可能是问题,也可能不是问题,这取决于您的应用程序执行的操作。

    其他可能起作用的选项包括背景音频,位置更新和VoIP,但它们可能会让您被拒绝。

    仅运行后台任务是行不通的-这是为了完成任务而不是让它们长时间运行而设计的。

    10-07 19:05
    查看更多