Background Modes ใน iOS — มันคืออะไร โหมดและการตั้งค่า

ผู้แต่ง: IT Sectr เผยแพร่เมื่อ: 2026-03-27 เวลาอ่าน: 9 นาที

Background Modes คือชุดความสามารถที่สามารถประกาศได้ของ iOS ที่ทำให้แอพสามารถดำเนินโค้ดต่อไปหลังจากเข้าสู่โหมดพื้นหลัง แต่ละโหมดจะตรงกับงานประเภทใดประเภทหนึ่ง: เสียง, ตำแหน่งที่ตั้ง, VoIP, Bluetooth, fetch และ processing ตามข้อมูลจาก Apple, 2026 การใช้ Background Modes อย่างไม่ถูกต้องเป็นสาเหตุทั่วไปของการปฏิเสธแอพระหว่างการตรวจสอบใน App Store

โดยสรุป

  • Background Modes — ชุดความสามารถ iOS สำหรับการดำเนินโค้ดในพื้นหลังอย่างถูกต้อง
  • โหมดเสียง — เล่นเพลง, พอดคาสท์, หนังสือเสียงในพื้นหลังโดยควบคุมผ่านศูนย์ควบคุม
  • ตำแหน่งที่ตั้ง — ติดตามตำแหน่งในพื้นหลังสำหรับการนำทางและตัวติดตามฟิตเนส
  • Bluetooth — ทำงานกับอุปกรณ์ BLE ในพื้นหลัง: สายรัดฟิตเนส, เซ็นเซอร์, อุปกรณ์ต่อพ่วง
  • การตรวจสอบ Apple — การใช้โหมดอย่างไม่ถูกต้องนำไปสู่การปฏิเสธแอพจาก App Store

Background Modes ใน iOS คืออะไร?

Background Modes คือความสามารถของโปรเจกต์ Xcode ที่ประกาศความตั้งใจของแอพที่จะดำเนินการเฉพาะประเภทในพื้นหลัง ต่างจาก Android ที่แอพสามารถเริ่มต้น Service ใดก็ได้ในพื้นหลัง iOS ต้องการการประกาศโหมดอย่างชัดเจนใน Info.plist แต่ละโหมดมีกฎการใช้งานที่เข้มงวดและจะถูกตรวจสอบโดย Apple ระหว่างการตรวจสอบ

Background Modes ทำงานอย่างไร

เมื่อแอพเข้าสู่พื้นหลัง iOS จะระงับมันภายใน 3–5 วินาที หากแอพประกาศ Background Mode และใช้ API ที่เกี่ยวข้องอย่างจริงจัง (เช่น AVAudioSession สำหรับเสียง) ระบบจะวางมันไว้ในโหมดการทำงานพิเศษ แอพจะอยู่ในหน่วยความจำ และสามารถดำเนินโค้ดที่จำกัดโดยประเภทโหมด

รายการโหมดที่มีอยู่ทั้งหมด

iOS รองรับ Background Modes ต่อไปนี้: เสียง, ตำแหน่ง, VoIP, Bluetooth LE (อุปกรณ์ BLE), Background Fetch (อัพเดตตามระยะ), Background Processing (งานระยะยาว), External Accessory Communication, Push to Talk (PTT) และ HealthKit แต่ละโหมด ต้องการคำอธิบายในคำอธิบายแอพ

โหมดคีย์ Info.plistวัตถุประสงค์เวอร์ชัน iOS
Audioaudioเสียงพื้นหลัง, AirPlay4.0+
Locationlocationติดตามตำแหน่ง4.0+
VoIPvoipการแจ้งเตือนแบบผลัก VoIP4.0+
BLEbluetooth-centralการทำงานกับอุปกรณ์ BLE7.0+
Fetchfetchดาวน์โหลดข้อมูลตามระยะ7.0+
Processingprocessingงานพื้นหลังระยะยาว13.0+
Push to Talkpush-to-talkเสียง push-to-talk16.0+

โหมดเสียง (เสียง, AirPlay และ Picture in Picture)

โหมดเสียงพื้นหลัง เป็นโหมดที่พบบ่อยที่สุด ใช้โดยโปรแกรมเพลง, แอพพอดคาสท์ และบริการเสียง แอพสามารถเล่นเสียงต่อไป ควบคุมผ่านศูนย์ควบคุม และปรากฏบนหน้าจอล็อค เพื่อเปิดใช้งาน เพียงแค่ตั้งค่า AVAudioSession ด้วยหมวดหมู่ .playback

การตั้งค่าเซสชันเสียง

เพื่อให้เสียงทำงานในพื้นหลัง จำเป็นต้องตั้งค่า AVAudioSession และเปิดใช้งานมัน หมวดหมู่ .playback บอกระบบว่าแอพกำลังเล่นเสียงและควรคงทำงานในพื้นหลัง หากไม่มีการตั้งค่านี้ เสียงจะหยุดภายใน 5–10 วินาทีหลังจากย่อแอพ

swift
import AVFoundation

func configureAudioSession() {
    let session = AVAudioSession.sharedInstance()
    do {
        try session.setCategory(
            .playback,
            mode: .default,
            options: []
        )
        try session.setActive(true)
    } catch {
        print("ข้อผิดพลาดเซสชันเสียง: \(error)")
    }
}

การควบคุมการเล่นจากศูนย์ควบคุม

สำหรับการผนวกกับ ศูนย์ควบคุม และหน้าจอล็อค ต้องตั้งค่า MPRemoteCommandCenter โดยจะจัดการคำสั่ง เล่น, หยุดชั่วคราว, ถัดไป และ ย้อนกลับ นอกจากนี้ยังต้องอัพเดต MPNowPlayingInfoProperty เพื่อแสดงเมตาดาต้า: ชื่อเพลง, ศิลปิน, ภาพปก และความคืบหน้าการเล่น

Picture in Picture สำหรับวิดีโอ

เริ่มต้นตั้งแต่ iOS 14 โหมดเสียงพื้นหลังยังรองรับ Picture in Picture สำหรับวิดีโอ แอพสามารถแสดงวิดีโอต่อไปในหน้าต่างลอยเมื่อย่อแอพ เพื่อเปิดใช้งาน ใช้ AVPictureInPictureController กับ AVPlayerLayer โหมดนี้จะทำงานเมื่อแอพกำลังเล่นแทร็กเสียงเท่านั้น

ตำแหน่งที่ตั้ง (อัพเดตตำแหน่ง)

โหมดตำแหน่งพื้นหลัง ช่วยให้แอพสามารถรับอัพเดตตำแหน่งในพื้นหลัง ใช้ในแอพนำทาง, ตัวติดตามฟิตเนส, แอพจัดส่ง และโซเชียลมีเดีย หากไม่มีโหมดนี้ แอพจะรับตำแหน่งเพียงครั้งเดียวเมื่อเข้าสู่พื้นหลัง หลังจากนั้นอัพเดตจะหยุดลง

ชนิดของการติดตามตำแหน่ง

CLLocationManager รองรับหลายกลวิธีการติดตาม: การเปลี่ยนแปลงตำแหน่งที่สำคัญ, การติดตามตำแหน่งมาตรฐาน และการตรวจสอบภูมิภาค สำหรับงานเบื้องหลังด้วยความแม่นยำสูงสุด ใช้ allowsBackgroundLocationUpdates = true และ pausesLocationUpdatesAutomatically = false

ประสิทธิภาพด้านพลังงานและความแม่นยำ

การติดตามตำแหน่งอย่างต่อเนื่องในพื้นหลังเป็นหนึ่งในสถานการณ์ที่ใช้พลังงานมากที่สุด iOS จะปรับความถี่ของการอัพเดตโดยอัตโนมัติ ตามความเร็วของการเคลื่อนไหว: เมื่อเดิน ทุก 10–30 วินาที เมื่อขับรถ ทุก 1–5 วินาที สำหรับการนำทาง ใช้ desiredAccuracy = kCLLocationAccuracyBestForNavigation

swift
let locationManager = CLLocationManager()
locationManager.requestAlwaysAuthorization()
locationManager.allowsBackgroundLocationUpdates = true
locationManager.pausesLocationUpdatesAutomatically = false
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.activityType = .fitness
locationManager.startUpdatingLocation()

การเปลี่ยนแปลงตำแหน่งที่สำคัญ

โหมด significant-change location ทำงานโดยไม่ต้องใช้โหมดตำแหน่งพื้นหลัง — ระบบจะปลุกแอพเมื่อพิกัดเปลี่ยนแปลงอย่างมีนัยสำคัญ (โดยทั่วไป 500 เมตรหรือมากกว่า) ไม่ต้องใช้ GPS ตลอดเวลา ช่วยประหยัดแบตเตอรี่ เหมาะสำหรับแอพสภาพอากาศที่อัพเดตข้อมูลเมื่อผู้ใช้เคลื่อนย้าย

โหมด Bluetooth (อุปกรณ์ LE)

โหมด Bluetooth LE พื้นหลัง ช่วยให้แอพสามารถโต้ตอบกับอุปกรณ์ BLE ในพื้นหลัง ใช้ในสายรัดฟิตเนส, เซ็นเซอร์ทางการแพทย์, อุปกรณ์ Smart Home และการนำทางด้วยบีคอน โหมดแบ่งเป็นสองประเภทย่อย: bluetooth-central (แอพเชื่อมต่อกับอุปกรณ์) และ bluetooth-peripheral (แอพทำหน้าที่เป็นอุปกรณ์)

การทำงานในโหมด Central

แอพที่ทำหน้าที่เป็น Central สามารถสแกนและเชื่อมต่อกับอุปกรณ์ BLE ในพื้นหลัง โดยระบุ bluetooth-central ใน Background Modes และเรียกใช้ CBCentralManager.scanForPeripherals ด้วยตัวเลือก CBCentralManagerScanOptionAllowDuplicatesKey ในพื้นหลัง การสแกนจะทำงานด้วยความถี่ต่ำลง — ระบบอาจหน่วงการค้นหาเพื่อประหยัดพลังงาน

การทำงานในโหมด Peripheral

แอพที่ทำหน้าที่เป็น Peripheral สามารถประกาศบริการและตอบสนองต่อคำขอจากอุปกรณ์อื่น โหมด bluetooth-peripheral ช่วยให้แอพสามารถมองเห็นได้สำหรับอุปกรณ์ BLE อื่นแม้ในพื้นหลัง ใช้ในแอพ HealthKit และโซลูชัน IoT

การตรวจสอบบีคอนและภูมิภาค

การตรวจสอบ iBeacon ทำงานในพื้นหลังโดยไม่ต้องใช้อนุญาตเพิ่มเติม — ระบบจะติดตามการเข้าและออกจากภูมิภาค Beacon เอง แต่การสแกนเนื้อหา Beacon (proximity UUID, major, minor) ต้องใช้อนุญาต Bluetooth และ bluetooth-central Background Mode ใช้ CLLocationManager กับ CLBeaconRegion สำหรับการตรวจสอบ

VoIP และ PushKit สำหรับแอพสื่อสาร

โหมด VoIP พื้นหลัง ถูกออกแบบมาสำหรับแอพสื่อสารด้วยเสียง (Skype, Zoom, WhatsApp) โหมดนี้ช่วยให้แอพสามารถเชื่อมต่อกับเซิร์ฟเวอร์ไว้เพื่อรับสายเข้า เริ่มต้นตั้งแต่ iOS 8 ใช้ PushKit สำหรับ VoIP — เฟรมเวิร์คที่จัดการการแจ้งเตือนแบบผลักจากเซิร์ฟเวอร์ VoIP โดยไม่ต้องใช้ APNs

PushKit สำหรับสายเข้า

PushKit เป็นกลไกเดียวที่รับประกันการส่งมอบการแจ้งเตือน VoIP ไปยังอุปกรณ์ เมื่อได้รับการแจ้งเตือน PushKit ระบบจะปลุกแอพแม้ว่าจะถูกยุติแล้วก็ตาม แอพต้องสร้างการเชื่อมต่อกับเซิร์ฟเวอร์ภายใน 30 วินาทีและแสดงการแจ้งเตือนในเครื่องสำหรับสายเข้า

swift
import PushKit

class VoIPHandler: NSObject, PKPushRegistryDelegate {
    func pushRegistry(
        _ registry: PKPushRegistry,
        didReceiveIncomingPushWith payload: PKPushPayload,
        for type: PKPushType,
        completion: @escaping () -> Void
    ) {
        let caller = payload.dictionaryPayload["caller"] as! String
        reportIncomingCall(from: caller)
        completion()
    }
}

กฎการใช้ PushKit

PushKit ไม่สามารถใช้กับการแจ้งเตือนทั่วไป — ใช้กับ VoIP, watchOS และผู้ให้บริการไฟล์เท่านั้น Apple จะตรวจสอบ เรื่องนี้ระหว่างการตรวจสอบ การใช้งานอย่างไม่เหมาะสมนำไปสู่การปฏิเสธแอพ เริ่มต้นตั้งแต่ iOS 13 PushKit จะส่งมอบเฉพาะการแจ้งเตือน — การเรียก CXProvider (CallKit) เพื่อแสดงหน้าจอสายเป็นสิ่งบังคับ

โหมด Fetch และ Processing

Background Fetch และ Background Processing เป็นโหมดสำหรับการอัพเดตเนื้อหาในพื้นหลังและงานระยะยาว Fetch สำหรับการอัพเดตตามระยะสั้น (สูงสุด 30 วินาที), Processing สำหรับงานระยะยาว (สูงสุด 10 นาที) โดยมีเงื่อนไข (Wi-Fi, การชาร์จ) Processing ใช้ได้ใน iOS 13+ เท่านั้น

Background Fetch — อัพเดตที่รวดเร็ว

โหมด Fetch ช่วยให้ระบบสามารถปลุกแอพเป็นระยะเพื่อดาวน์โหลดเนื้อหาใหม่ ระบบจะวิเคราะห์พฤติกรรมของผู้ใช้และเลือกเวลาที่เหมาะสมที่สุด แอพต้องเรียก completion handler ภายใน 30 วินาที Fetch เหมาะสำหรับแอพข่าว, ฟีดโซเชียลมีเดีย และสภาพอากาศ

Background Processing — งานระยะยาว

BGProcessingTask ถูกออกแบบมาสำหรับงานที่สามารถทำได้โดยไม่ต้องใช้ผู้ใช้: ทำความสะอาดแคช, ซิงโครไนซ์ฐานข้อมูลขนาดใหญ่, ประมวลผลไฟล์มีเดีย ระบบจะเริ่มงานภายใต้เงื่อนไขที่เอื้ออำนวยเท่านั้น — อุปกรณ์กำลังชาร์จ, เชื่อมต่อ Wi-Fi, ไม่อยู่ในโหมดประหยัดพลังงานต่ำ ใช้ได้นานสูงสุด 10 นาที

การวางกำหนดการและข้อกำหนด

สำหรับ BGProcessingTask ต้องระบุ requiresExternalPower และ requiresNetworkConnectivity ระบบอาจเลื่อนการดำเนินงานออกไปอย่างไม่มีกำหนดหากไม่ตรงตามเงื่อนไข ต่างจาก BGAppRefreshTask ที่ต้องทำงานอย่างน้อยวันละครั้ง Processing อาจไม่ทำงานเป็นเวลาหลายสัปดาห์หากอุปกรณ์ไม่ค่อยชาร์จ

แนวทางการตรวจสอบ App Store สำหรับ Background Modes

Apple ตรวจสอบการใช้ Background Modes อย่างเข้มงวดระหว่างการตรวจสอบแอพ กฎหลัก: แต่ละโหมดที่เปิดใช้งานต้องอธิบายได้โดยฟังก์ชันการทำงานของแอพ หากแอพประกาศใช้ Location Mode แต่ไม่ใช้ตำแหน่งที่ตั้ง มันจะถูกปฏิเสธโดยต้องลบความสามารถนั้นออก

สาเหตุทั่วไปของการปฏิเสธ

การละเมิดที่พบบ่อยที่สุด: Location Mode โดยไม่มีความจำเป็นที่ชัดเจน (แอพขอเข้าถึงแบบ "ตลอดเวลา" เพื่อแสดงโฆษณา), Audio Mode โดยไม่มีการเล่นเสียงในพื้นหลัง, VoIP โดยไม่มี PushKit, BLE Mode โดยไม่มีอุปกรณ์ Bluetooth Apple อาจปฏิเสธแอพแม้ในขั้นตอนอัพเดตหากไม่ใช้โหมดนั้นอีกต่อไป

คำอธิบายในหมายเหตุการตรวจสอบ

เมื่อส่งเพื่อการตรวจสอบ ให้ระบุเหตุผลเฉพาะสำหรับแต่ละโหมดใน หมายเหตุ ตัวอย่างเช่น "Location Background Mode ใช้เพื่อติดตามเส้นทางของผู้ใช้ในฟีเจอร์ฟิตเนส" หากไม่มีคำอธิบาย ผู้ตรวจสอบอาจปฏิเสธแอพ สำหรับฟีเจอร์ที่เป็นความลับ (VoIP) Apple อาจขอบัญชีทดสอบ

คำแนะนำสำหรับการลดจำนวนโหมด

ใช้ชุดโหมดที่จำเป็นขั้นต่ำที่สุด หากแอพของคุณต้องการดาวน์โหลดข้อมูลในพื้นหลังชั่วโมงละครั้ง — อย่าเปิดใช้ Location Mode ให้ใช้ Fetch หรือ BGAppRefreshTask แทน โหมดที่เกินความจำเป็น ไม่เพียงแต่นำไปสู่การปฏิเสธแต่ยังสร้างความประทับใจที่ไม่ดี: ผู้ใช้จะเห็นในการตั้งค่าว่าแอพใช้ตำแหน่งที่ตั้งในพื้นหลัง

คำถามที่พบบ่อย

ในแอพหนึ่งสามารถเปิดใช้งานได้กี่ Background Modes?

ไม่มีข้อจำกัดด้านจำนวน แต่ แต่ละโหมด ต้องอธิบายได้โดยฟังก์ชันการทำงานของแอพ การเปิดใช้งานทุกโหมดโดยไม่จำเป็นเป็นสาเหตุแน่นอนของการปฏิเสธระหว่างการตรวจสอบ ข้อจำกัดในทางปฏิบัติคือ 2–3 โหมดต่อแอพ มิฉะนั้นผู้ใช้จะเห็นคำขออนุญาตจำนวนมาก

จะตรวจสอบได้อย่างไรว่า Background Mode ทำงานอยู่หรือไม่?

ใช้ UIApplication.shared.applicationState — แอพสามารถตรวจสอบได้ว่าอยู่ในพื้นหลังหรือไม่ (state == .background) นอกจากนี้ยังสามารถติดตามการแจ้งเตือน UIApplication.didEnterBackgroundNotification และ willEnterForegroundNotification เพื่อสลับพฤติกรรม

ความแตกต่างระหว่างโหมด Audio และ AirPlay Background คืออะไร?

Audio — เล่นเสียงผ่านลำโพงหรือหูฟัง AirPlay — สตรีมเสียงและวิดีโอไปยัง Apple TV และอุปกรณ์ AirPlay อื่น ในทางปฏิบัติ โหมด Audio ครอบคลุมทั้งสองสถานการณ์เนื่องจาก AirPlay ใช้เซสชันเสียง ไม่จำเป็นต้องใช้โหมด AirPlay แยกต่างหากตั้งแต่ iOS 7+

ฉันสามารถใช้ตำแหน่งพื้นหลังเฉพาะเมื่อแอพเปิดอยู่เท่านั้นหรือไม่?

ใช่ สำหรับสิ่งนี้ให้ใช้ requestWhenInUseAuthorization() แทน requestAlwaysAuthorization() แอพจะรับตำแหน่งเฉพาะในเบื้องหน้าเท่านั้น หากต้องการติดตามสั้นๆ ในพื้นหลัง ให้เรียก startUpdatingLocation() และหยุดใน willResignActive

Background Modes ส่งผลต่อแบตเตอรี่อย่างไร?

แต่ละโหมดเพิ่มการใช้พลังงาน Location Mode ใช้พลังงานมากที่สุด สามารถลดอายุแบตเตอรี่ลง 30–50% เมื่อติดตามต่อเนื่อง โหมดเสียงอยู่ในระดับปานกลาง (15–20%) Fetch และ Processing อยู่ในระดับน้อยที่สุด (2–5%) BLE Mode อยู่ในระดับต่ำ (5–10%) เนื่องจากประสิทธิภาพพลังงานของ Bluetooth LE

สรุป

  • Background Modes — ความสามารถที่ประกาศได้ของ iOS ที่ช่วยให้แอพดำเนินโค้ดในพื้นหลังอย่างถูกต้อง
  • Audio Mode — พบบ่อยที่สุด สำหรับเล่นเพลง, พอดคาสท์ และวิดีโอผ่าน AVAudioSession ด้วยหมวดหมู่ .playback
  • Location Mode — สำหรับการนำทางและฟิตเนส ใช้พลังงานมากที่สุด ต้องใช้ requestAlwaysAuthorization และ allowsBackgroundLocationUpdates
  • BLE Mode — ทำงานกับอุปกรณ์ Bluetooth ในพื้นหลังผ่าน CBCentralManager ด้วยการสแกนพื้นหลัง
  • VoIP และ PushKit — สำหรับแอพสื่อสาร รับประกันการส่งมอบสายเข้าผ่าน PKPushRegistry
  • Fetch และ Processing — งานพื้นหลังสั้นและยาวที่มีเงื่อนไขการดำเนินงานและข้อจำกัดเวลาต่างกัน
  • Apple ตรวจสอบเหตุผลของแต่ละโหมดอย่างเข้มงวด — การใช้งานอย่างไม่เหมาะสมนำไปสู่ การปฏิเสธแอพ จาก App Store

เราจะพัฒนาแอปพลิเคชันบนมือถือแบบครบวงจร

IT Sectr สร้างแอปพลิเคชัน iOS และ Android สำหรับสตาร์ทอัพและธุรกิจตั้งแต่ปี 2017 เราจะให้คำแนะนำและเสนอวิธีแก้ปัญหาที่ดีที่สุดแก่คุณ

ปรึกษาโครงการ

อ่านเพิ่มเติม