后台提取在模拟器中工作,但在实际设备中不工作。

问题描述 投票:0回答:1

我调用API来获取数据,并根据API的响应显示本地推送,所以我使用了 background fetch 苹果公司的服务,它是在 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

ios background fetch swift5 xcode11.1
1个回答
0
投票

你的代码是iOS12及之前的。 试试新的流程。 我在这里举了一个例子(我的应用程序的工作代码)。

BGAppRefreshTask后台任务不执行

© www.soinside.com 2019 - 2024. All rights reserved.