后台获取可在模拟器中运行,但不能在真实设备中运行

时间:2020-05-04 15:44:29

标签: ios background fetch swift5 xcode11.1

我正在调用API来获取数据并根据API的响应显示本地推送,因此我正在使用background fetch及更高版本中介绍的Apple的iOS 13服务。

但是当尝试在模拟器中测试此方案时,它工作正常,但是当我在真实设备中检查此应用程序时,它无法正常工作,并且在尝试在后台调用api时失去了连接。

我不是从设备上杀死我的应用程序,只需单击主页按钮即可将其撤消。

我不确定为什么它不能在真实设备中运行。

我到目前为止所做的。步骤在这里:

  1. 我已从应用程序项目的功能启用后台获取。

  2. 然后我将此代码添加到AppDelegate

    extension AppDelegate {
    
    func application(_ application: UIApplication, performFetchWithCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
    
      print("Bg Fetch from App Delegate 1")
    
      DispatchQueue.main.asyncAfter(deadline: .now() + 3.0) {
    
      BroadCastManager.sharedInstance.fetchNewDataWithCompletionHandler(completionHandler: completionHandler)
    
    }
    }
    }
    
  3. 这将从服务类中调用一种方法,其中将调用一个API,然后根据响应api触发一次本地推送。

所以这里的问题是,当在真实设备中调用API且应用程序在后台运行时,我将遇到错误。

错误屏幕截图。

enter image description here

1 个答案:

答案 0 :(得分:0)

您拥有的代码是iOS12及更低版本。尝试新的过程。我在这里举了一个例子(我的应用的工作代码):

BGAppRefreshTask Background Task Not Executing