Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> IOS

วิธีเรียกใช้ตัวจับเวลาในพื้นหลังในแอป iOS ของคุณ


หากคุณต้องการเรียกใช้ตัวจับเวลาในพื้นหลังภายในแอปพลิเคชัน iOS ของคุณ Apple มีวิธี BeginBackgroundTaskWithExpirationHandler คุณสามารถอ่านเพิ่มเติมเกี่ยวกับ https://developer.apple.com/documentation/uikit/uiapplication/1623031-beginbackgroundtaskwithexpiration เดียวกันได้

เราจะใช้รหัสเดียวกันนี้ในการเขียนโค้ดสำหรับเรียกใช้ตัวจับเวลาในพื้นหลัง

เริ่มกันเลย

ขั้นตอนที่ 1 − เปิด Xcode → แอปพลิเคชั่นมุมมองเดียว → ตั้งชื่อว่า BackgroundTimer กันเถอะ

ขั้นตอนที่ 2 − เปิด AppDelegate.swift และภายใต้ method applicationDidEnterBackground เขียนโค้ดด้านล่าง

backgroundTaskIdentifier = UIApplication.shared.beginBackgroundTask(expirationHandler: {
   UIApplication.shared.endBackgroundTask(self.backgroundTaskIdentifier!)
})
_ = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(self.doSomething), userInfo: nil, repeats: true)

ขั้นตอนที่ 3 − เขียนฟังก์ชันใหม่ doSomething()

@objc func doSomething() {
   print("I'm running")
}

สุดท้ายโค้ดของคุณควรมีลักษณะดังนี้

func applicationDidEnterBackground(_ application: UIApplication) {
   backgroundTaskIdentifier = UIApplication.shared.beginBackgroundTask(expirationHandler: {
      UIApplication.shared.endBackgroundTask(self.backgroundTaskIdentifier!)
   })
   _ = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(self.doSomething), userInfo: nil, repeats: true)
}
@objc func doSomething() {
   print("I'm running")
}

เรียกใช้แอปพลิเคชัน

ที่นี่เรากำลังพิมพ์ "ฉันกำลังใช้งาน" เมื่อแอปพลิเคชันไปที่พื้นหลัง เมื่อแอปทำงานในพื้นหลัง “ฉันกำลังใช้งานอยู่” จะเริ่มพิมพ์บนคอนโซล แตะปุ่มโฮมแล้วทดสอบ อย่างไรก็ตาม คุณสามารถเรียกใช้ตัวจับเวลาได้สูงสุด 3 นาทีเมื่อแอปของคุณทำงานในพื้นหลังตามที่ระบุในเอกสารของ Apple และผ่านการทดสอบแล้ว

ขณะเรียกใช้แอปพลิเคชันนี้ ให้สร้างแอปพลิเคชันในพื้นหลังและรอ 3 นาที คุณจะเห็นว่า "ฉันกำลังใช้งาน" จะไม่พิมพ์ออกมาหลังจาก 3 นาที ตอนนี้นำแอปพลิเคชันไปที่พื้นหน้าและคุณจะสังเกตเห็นว่า "ฉันกำลังทำงาน" เริ่มพิมพ์

วิธีเรียกใช้ตัวจับเวลาในพื้นหลังในแอป iOS ของคุณ