gpt4 book ai didi

ios - 计时器在真正的 iPhone 上不工作

转载 作者:行者123 更新时间:2023-11-30 14:02:55 26 4
gpt4 key购买 nike

我正在尝试使用本地通知,但有些东西不起作用。

我有一个类通知,用于处理与通知相关的所有代码。显然它正在发挥作用。不起作用的是我尝试触发通知的方式。

当用户单击主页按钮时,我调用启动 NSTimer 的通知类。它每秒重复一次,并且每 10 秒我调用一个 Web 服务。

在我的模拟器上一切正常,但在我的真实 iPhone 上却不起作用。

代码如下:

//as a class variable
let notif = Notification()

func applicationDidEnterBackground(application: UIApplication) {

notif.triggerTimer()

}

通知类

class Notification: NSObject, WsOrderStatusProtocol, WsPinRequestProtocol {

var timer = NSTimer()
var time = 0
var sendNotification:Bool = true

var wsos = WsOrderStatus()
var wsoc = PinRequest()

override init() {
super.init()
self.wsos.delegate = self
self.wsoc.delegate = self
}

func triggerTimer() {
print("log INFO : class Notification, methode : triggerTimer")

NSNotificationCenter.defaultCenter().addObserver(self, selector:"orderCoupon:", name: "actionOrderCouponPressed", object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector:"cancelTimer:", name: "actionCancelTimerPressed", object: nil)

timer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: Selector("launchNotification"), userInfo: nil, repeats: true)

}

func launchNotification() {
print("log INFO : class Notification, methode : launchNotification")

time += 1

print("time \(time)")

if time % 10 == 0 {
print("modulo 10")
wsos.getOrderStatus()
}


}

}

在模拟器中,我看到日志和计数到 10 等的日志,但是对于我真正的 iPhone,我只看到第一个日志“print(”log INFO : class notification, methode :triggerTimer”)”,然后什么也没有...

你知道为什么吗?

最佳答案

正如 Paul 在评论中所说,您的应用程序在被挂起之前只会在后台花费很短的时间。暂停意味着您的代码不再运行,因此计时器停止。

模拟器并不总是遵循相同的规则。当其行为与设备的行为不同时,请忽略它。它撒谎了。

如果你想有更多的时间在后台工作,你可以使用方法beginBackgroundTaskWithExpirationHandler来请求。在您的 applicationDidEnterBackground 方法中进行该调用。

根据测试,我发现这会给你 3 分钟的额外时间。之后,您的过期处理程序 block 将被执行,然后您将被暂停。

Apple 不希望您的应用程序在后台无限期地运行。它会耗尽电池电量。

我发现可以撒谎并告诉系统您是一个从后台播放声音的应用程序,并编写您的过期处理程序来播放简短的“静音”,然后请求另一个后台任务使用beginBackgroundTaskWithExpirationHandler。但是,这样做会让您被应用商店拒绝。

关于ios - 计时器在真正的 iPhone 上不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32772069/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com