我只为自己制作一个 iOS 应用程序。当应用程序在后台时,我需要每 30 分钟执行一次某些代码。
因为我只是这个应用程序的用户,所以不需要担心击球率和苹果审查过程。我可以使用任何/所有背景模式 VOIP、音乐等。
是否可以每 30 分钟在后台运行该代码?请指导我方向。
这是有可能的。
一种方法是创建一个虚假的 VPN 数据包隧道扩展。并将您的代码放入 VPN Manager 类中。当您的应用程序在后台运行时,VPN 扩展部分将继续运行,甚至被用户强制停止运行。
你可以在这个方法中编写你的代码
NEPacketTunnelProvider
override func startTunnelWithOptions(options: [String : NSObject]?, completionHandler: (NSError?) -> Void) {
fetchData()
}
func fetchData() {
// Do not use the NSTimer here that will not run in background
let q_background = DispatchQueue.global(qos: .background)
let delayInSeconds: Double = 300.0 // seconds
let popTime = DispatchTime.now() + DispatchTimeInterval.seconds(Int(delayInSeconds))
q_background.asyncAfter(deadline: popTime) {
// Fetch your data from server and generate local notification by using UserNotifications framework
fetchData()
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1959 次 |
| 最近记录: |