后台获取在实际设备上不起作用

时间:2019-08-16 19:32:10

标签: ios swift ios-background-mode

请提供建议。由于某些原因,在实际的iOS设备上无法进行后台抓取。通过Xcode(Debug -> Sumulate Background Fetch)运行时,一切正常。但是,当我在真实设备上安装该应用程序时,此功能不起作用。

我将澄清以下内容:

  1. 我不会杀死应用程序,而只是将其最小化。
  2. 在应用的设置和整个手机的设置中都启用了Background App Refresh设置。
  3. 我等了一天多-没有任何反应。

在我看来是什么原因:

  1. 我通过TestFlight在iPhone上运行该应用。
  2. iPhone上没有安装SIM卡。
  3. 在我的应用中,AppDelegate文件的标准名称已更改为BaseDelegate,其位置也从MyApp/MyApp/AppDelegate.swift更改为MyApp/MyApp/base/BaseDelegate.swift(该应用已正确配置(此文件的新名称和位置)。 会以某种方式影响吗?

我所做的:

  1. 我在项目设置中打开了Background fetch模式。
  2. 我将以下代码添加到info.plist
<key>UIBackgroundModes</key>
<array>
    <string>fetch</string>
</array>
  1. 以下代码已添加到AppDelegate.swift
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { 
    UIApplication.shared.setMinimumBackgroundFetchInterval(UIApplication.backgroundFetchIntervalMinimum) 
}

func application(_ application: UIApplication, performFetchWithCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
    var message = UserDefaults.standard.string(forKey: "fetch") ?? "nil"
    message = "\(message) | \(Helper.getStringFromDate(Helper.getCurrentDate()))"
    UserDefaults.standard.set(message, forKey: "fetch")

    // Sending local notification ...

    // Receiving data from the server ...

    completionHandler(.newData)
}

要测试该应用,我会发送本地通知,还将时间保存在UserDefaults中。

0 个答案:

没有答案