请提供建议。由于某些原因,在实际的iOS设备上无法进行后台抓取。通过Xcode(Debug -> Sumulate Background Fetch
)运行时,一切正常。但是,当我在真实设备上安装该应用程序时,此功能不起作用。
我将澄清以下内容:
Background App Refresh
设置。在我看来是什么原因:
TestFlight
在iPhone上运行该应用。AppDelegate
文件的标准名称已更改为BaseDelegate
,其位置也从MyApp/MyApp/AppDelegate.swift
更改为MyApp/MyApp/base/BaseDelegate.swift
(该应用已正确配置(此文件的新名称和位置)。
会以某种方式影响吗?我所做的:
Background fetch
模式。info.plist
<key>UIBackgroundModes</key>
<array>
<string>fetch</string>
</array>
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中。