Silent Push — สาระสำคัญ งานเบื้องหลัง และการกำหนดค่าการจัดส่ง

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

Silent Push คือประเภทของการแจ้งเตือนแบบ push ของ iOS ที่ถูกส่งไปยังอุปกรณ์โดยไม่แสดงอะไรให้ผู้ใช้เห็นและไม่มีเสียงประกอบ วัตถุประสงค์หลักของการแจ้งเตือนแบบเงียบคือการซิงโครไนซ์ข้อมูลเบื้องหลัง การอัปเดตเนื้อหา และการทำงานสั้นๆ ที่ไม่ต้องการความสนใจจากผู้ใช้ ตาม Apple Developer Documentation, 2026, Silent Push จะเปิดใช้งานแอปในเบื้องหลังเป็นเวลา 30 วินาทีเพื่อประมวลผลข้อมูลที่เข้ามา หลังจากนั้นระบบจะคืนอุปกรณ์กลับสู่โหมดสลีปเพื่อประหยัดแบตเตอรี่

ประเด็นสำคัญ

  • การเปิดใช้งานเบื้องหลัง — Silent Push ปลุกแอปในเบื้องหลังเป็นเวลา 30 วินาทีเพื่อประมวลผลข้อมูลโดยไม่ต้องให้ผู้ใช้มีส่วนร่วม
  • คีย์ content-available — แฟล็กบังคับในเพย์โหลด APNS ที่มีค่า 1 ซึ่งแยกความแตกต่างระหว่างการแจ้งเตือนแบบเงียบกับการแจ้งเตือนปกติ
  • การประหยัดแบตเตอรี่ — ระบบปรับการจัดส่ง silent push ให้เหมาะสม: เมื่อแบตเตอรี่เหลือน้อยหรืออยู่ในโหมดประหยัดพลังงาน การจัดส่งอาจล่าช้าหรือถูกยกเลิก
  • ข้อจำกัดด้านความถี่ — iOS ไม่รับประกันการจัดส่ง silent push ทุกรายการ โดยเฉพาะเมื่อส่งด้วยความถี่สูงหรือเมื่อแอปอยู่ในเบื้องหลัง
  • ไม่มี UI — การแจ้งเตือนแบบเงียบจะไม่แสดงในศูนย์การแจ้งเตือน ไม่เล่นเสียง และไม่เพิ่มป้ายบนไอคอนแอป

Silent Push คืออะไร — สาระสำคัญและวัตถุประสงค์

Silent Push เป็นกลไกของ iOS ที่ส่งข้อมูลไปยังอุปกรณ์โดยไม่มีการแจ้งเตือนทางภาพใดๆ ไปยังผู้ใช้ แตกต่างจากการ push แบบมาตรฐานที่แสดงแบนเนอร์ เล่นเสียง และปรากฏในศูนย์การแจ้งเตือน silent push จะ “ปลุก” แอปในเบื้องหลังและส่งข้อมูลให้ประมวลผล ผู้ใช้จะไม่มีทางรู้เกี่ยวกับการจัดส่งการแจ้งเตือนดังกล่าว — ผลลัพธ์คือเนื้อหาที่อัปเดตเมื่อเปิดแอปครั้งต่อไป

ความแตกต่างจากการแจ้งเตือน push ทั่วไป

ความแตกต่างหลักอยู่ที่เพย์โหลด JSON: silent push มีแฟล็ก content-available: 1 และไม่มี alert, sound หรือ badge การแจ้งเตือนมาตรฐานที่มี alert จะแสดงให้ผู้ใช้เห็นเสมอ โดยไม่ขึ้นกับ content-available Silent push ทำงานเฉพาะกับ content-available: 1 และไม่มี alert — หากคุณเพิ่ม alert ระบบจะแสดงการแจ้งเตือนแม้จะมีแฟล็กการจัดส่งเบื้องหลัง

เมื่อใดควรใช้ Silent Push

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

การจัดส่งการแจ้งเตือนแบบเงียบทำงานอย่างไร

การจัดส่ง Silent Push แตกต่างอย่างมากจากการแจ้งเตือนปกติและเป็นไปตามกฎการเพิ่มประสิทธิภาพพลังงาน ระบบ iOS จะรับคำขอ push จาก APNS ระบุว่านี่คือ silent push (content-available: 1) และตัดสินใจว่าจะจัดส่งหรือไม่โดยพิจารณาจากหลายปัจจัย: ระดับแบตเตอรี่ โหมดประหยัดพลังงาน ความถี่ของ silent push ก่อนหน้า กิจกรรมของแอป และโหลด CPU ปัจจุบัน

บทบาทของ Power Nap และโหมดเบื้องหลัง

บนอุปกรณ์ที่มีชิป Apple M และ iOS 15+ silent push จะรวมเข้ากับกลไก Power Nap ซึ่งจะปลุกอุปกรณ์เป็นระยะสำหรับงานเบื้องหลัง Power Nap จะรวม silent push หลายรายการเป็นช่วงกิจกรรมเดียว ซึ่งลดการใช้พลังงานโดยรวม นักพัฒนาไม่สามารถควบคุม Power Nap โดยตรง — ระบบจะตัดสินใจโดยอัตโนมัติตามพฤติกรรมผู้ใช้และประวัติการใช้แอป

หน้าต่างการประมวลผล 30 วินาที

เมื่อระบบจัดส่ง silent push แอปจะได้รับการเรียก application(_:didReceiveRemoteNotification:fetchCompletionHandler:) ใน AppDelegate นักพัฒนาต้อง เรียก completion handler ภายใน 30 วินาที โดยส่งผลลัพธ์ที่ถูกต้อง (UIBackgroundFetchResult) หากการประมวลผลไม่เสร็จทันเวลา ระบบอาจจำกัดความถี่ของ silent push สำหรับแอปนี้หรือหยุดจัดส่งทั้งหมด

swift
// การประมวลผล Silent Push ใน AppDelegate
func application(
    _ application: UIApplication,
    didReceiveRemoteNotification userInfo: [AnyHashable: Any],
    fetchCompletionHandler completionHandler:
    @escaping (UIBackgroundFetchResult) -> Void
) {
    guard let type = userInfo["sync-type"] as? String
    else {
        completionHandler(.failed)
        return
    }

    if type == "news-feed" {
        NewsFeedSyncService().sync { success in
            completionHandler(success ? .newData : .failed)
        }
    } else if type == "cache-invalidate" {
        CacheManager.shared.invalidateAll()
        completionHandler(.newData)
    } else {
        completionHandler(.noData)
    }
}

ช่วงเวลาระหว่างการจัดส่ง

Apple ไม่เผยแพร่ช่วงเวลาที่แน่นอนระหว่าง silent push แต่จากการทดสอบและเอกสาร แนะนำให้ส่งไม่เกิน 2–3 การแจ้งเตือนแบบเงียบต่อชั่วโมง ต่ออุปกรณ์ หากส่งบ่อยกว่านั้น ระบบจะเริ่มไม่สนใจ silent push และข้อมูลจะหยุดถูกจัดส่ง หากต้องการการซิงโครไนซ์บ่อยขึ้น ให้พิจารณาใช้ URLSession พร้อมการกำหนดค่าเบื้องหลังหรือ VoIP push

กรณีการใช้งาน Silent Push

Silent Push ถูกใช้ในงานที่หลากหลายซึ่งข้อมูลต้องเป็นปัจจุบันโดยไม่ต้องให้ผู้ใช้มีส่วนร่วม เรามาดูกรณีการใช้งานที่มีประสิทธิภาพสูงสุดของกลไกนี้ในแอปพลิเคชัน iOS จริงกัน

การอัปเดตเนื้อหาสำหรับการเข้าถึงแบบออฟไลน์

แอปข่าว โปรแกรมอ่าน และแอปพลิเคชันท่องเที่ยวใช้ Silent Push เพื่อดาวน์โหลดเนื้อหาใหม่ในเบื้องหลัง เมื่อผู้ใช้เปิดแอป ข้อมูลจะถูกโหลดแล้วและพร้อมใช้งานแม้ไม่มีการเชื่อมต่ออินเทอร์เน็ต แนวทางนี้ ช่วยปรับปรุงประสบการณ์ผู้ใช้ได้อย่างมาก — หน้าจอโหลดว่างเปล่าจะหายไปและเนื้อหาจะแสดงทันที เซิร์ฟเวอร์จะส่ง silent push เมื่อมีบทความใหม่ และแอปจะดาวน์โหลดในเบื้องหลังเพื่ออ่านแบบออฟไลน์

การซิงโครไนซ์สถานะวิดเจ็ต

iOS WidgetKit อัปเดตวิดเจ็ตตามกำหนดเวลา แต่สำหรับการอัปเดตทันทีหลังจากการเปลี่ยนแปลงข้อมูลฝั่งเซิร์ฟเวอร์ จะใช้ Silent Push แอปในเบื้องหลัง จะประมวลผล silent push อัปเดตพื้นที่เก็บข้อมูลท้องถิ่นสำหรับวิดเจ็ต และบังคับรีเฟรชไทม์ไลน์ผ่าน WidgetCenter ผู้ใช้เห็นข้อมูลล่าสุดบนวิดเจ็ตโดยไม่ต้องเปิดแอป — อัตราแลกเปลี่ยน พยากรณ์อากาศ สถานะการจัดส่ง

การทำให้แคชเป็นโมฆะและการล้างข้อมูลที่ล้าสมัย

เมื่อเซิร์ฟเวอร์อัปเดตข้อมูลสำคัญ (เช่น กฎการกำหนดราคา คุณสมบัติที่มีให้สำหรับผู้ใช้ระดับพรีเมียม) Silent Push ช่วยให้สามารถทำให้แคชภายในเครื่องเป็นโมฆะได้ทันที เมื่อเปิดครั้งถัดไป แอปจะโหลดข้อมูลใหม่จากเซิร์ฟเวอร์แทนที่จะใช้แคชที่ล้าสมัย ซึ่งมีความเกี่ยวข้องโดยเฉพาะสำหรับแอปที่มีเนื้อหาที่ต้องชำระเงินหรือการสมัครรับข้อมูล

การอัปเดตป้ายโดยไม่มีการแจ้งเตือนที่มองเห็นได้

ในบางสถานการณ์ จำเป็นต้องอัปเดตป้ายบนไอคอนแอปโดยไม่แสดงการแจ้งเตือน Silent Push ที่มีฟิลด์ badge ในเพย์โหลดช่วยให้ตั้งค่าตัวนับที่ต้องการได้โดยไม่รบกวนผู้ใช้ด้วยแบนเนอร์ ตัวอย่างเช่น แอปแชทสามารถอัปเดตป้ายด้วยจำนวนข้อความที่ยังไม่ได้อ่านโดยไม่ต้องแสดงข้อความใหม่แต่ละข้อความเป็นการแจ้งเตือนหากผู้ใช้อยู่ในแอปแล้ว

การกำหนดค่า Silent Push: เพย์โหลดและความสามารถ

สำหรับการทำงานที่ถูกต้องของ Silent Push จำเป็นต้องมีการกำหนดค่าในสามระดับ: โปรเจกต์ Xcode เพย์โหลด JSON บนเซิร์ฟเวอร์ และโค้ดการประมวลผลในแอป แต่ละระดับ มีความสำคัญ: การข้ามขั้นตอนใดๆ จะส่งผลให้การแจ้งเตือนถูกจัดส่งเป็นแบบปกติหรือไม่ถูกจัดส่งเลย

การกำหนดค่าความสามารถใน Xcode

ใน Xcode คุณต้องเปิดใช้งานความสามารถ Push Notifications และ Background Modes โดยทำเครื่องหมายที่ช่อง Remote notifications Push Notifications จะสร้างใบรับรองสำหรับ APNS ในขณะที่ Remote notifications ใน Background Modes อนุญาตให้ระบบปลุกแอปเมื่อได้รับ silent push หากไม่มี Remote notifications silent push จะถูกจัดส่ง แต่แอปจะไม่ถูกเปิดใช้งานในเบื้องหลังและข้อมูลจะไม่ถูกประมวลผล

โครงสร้างเพย์โหลด JSON

เพย์โหลด Silent Push ต้องมีคีย์ aps พร้อม content-available: 1 และต้องไม่มี alert, sound หรือ badge ฟิลด์ที่กำหนดเอง จะถูกส่งในระดับเดียวกับ aps และมีข้อมูลสำหรับการประมวลผล: ประเภทการดำเนินการ ตัวระบุวัตถุ เมตาดาต้า เพย์โหลดที่ไม่มี content-available จะถูกจัดการเป็นการแจ้งเตือนปกติ หากมี alert จะเป็นปกติแม้จะมี content-available

json
{
    "aps": {
        "content-available": 1
    },
    "sync-type": "news-feed",
    "last-article-id": "article_8521",
    "priority": "high"
}

การประมวลผลฝั่งไคลเอนต์

เมื่อได้รับ silent push iOS จะเรียก application(_:didReceiveRemoteNotification:fetchCompletionHandler:) ก่อนที่แอปจะมองเห็นได้ ในเมธอดนี้ คุณต้องวิเคราะห์ userInfo ดำเนินงานที่จำเป็น (คำขอเครือข่าย การเขียน Core Data การอัปเดตแคช) และเรียก completionHandler ด้วยผลลัพธ์ที่ถูกต้องภายใน 30 วินาทีเสมอ การไม่เรียก completionHandler ถือเป็นข้อผิดพลาดโดยระบบและส่งผลต่อความถี่ของ silent push ในอนาคต

ข้อจำกัดและแนวทางปฏิบัติที่ดีที่สุด

Silent Push ไม่ใช่ช่องทางการจัดส่งข้อมูลที่เชื่อถือได้สำหรับการดำเนินการที่สำคัญ — มันเป็นกลไกการปรับให้เหมาะสม ไม่ใช่การซิงโครไนซ์ที่รับประกัน นักพัฒนาต้องเข้าใจข้อจำกัดและออกแบบระบบเพื่อให้แอปทำงานได้อย่างถูกต้องทั้งที่มีและไม่มี silent push

ข้อจำกัดการจัดส่ง

iOS ไม่รับประกันการจัดส่ง silent push ทุกรายการ ระบบอาจเลื่อนหรือยกเลิกการจัดส่งเมื่อแบตเตอรี่เหลือน้อย (ต่ำกว่า 20%) ในโหมดประหยัดพลังงาน หลังจาก silent push บ่อยครั้ง หรือหากไม่ได้ใช้แอปเป็นเวลานาน สถิติการจัดส่งโดยเฉลี่ย ตามข้อมูลของ Apple: ประมาณ 70–80% ของ silent push จะถูกจัดส่งภายใน 5 นาที ส่วนที่เหลืออาจล่าช้าหรือสูญหาย

คำแนะนำของ Apple เกี่ยวกับ Silent Push

Apple แนะนำให้ปฏิบัติตามกฎหลายข้อเพื่อการใช้ silent push อย่างมีประสิทธิภาพ อย่าส่ง silent push เกิน 2–3 ครั้งต่อชั่วโมง ต่ออุปกรณ์ — การเกินขีดจำกัดจะทำให้ถูกบล็อก ใช้เพย์โหลดแบบกะทัดรัด: ขนาดเพย์โหลดขั้นต่ำช่วยเร่งการประมวลผลและลดภาระเครือข่าย เรียก completionHandler เสมอและเร็วที่สุดเท่าที่เป็นไปได้: ยิ่งการประมวลผลใช้นานเท่าใด โอกาสที่ระบบจะจำกัด silent push ในอนาคตก็ยิ่งสูงขึ้น

ทางเลือกแทน Silent Push

สำหรับสถานการณ์ที่ต้องการการจัดส่งที่รับประกันหรือเวลาประมวลผลมากขึ้น ให้พิจารณาทางเลือก VoIP push (PushKit) รับประกันการจัดส่งและให้เวลามากขึ้น แต่มีไว้สำหรับแอปพลิเคชัน VoIP เท่านั้น Background fetch (UIApplication background fetch) จะถูกเริ่มต้นโดยระบบตามกำหนดเวลา แต่ไม่สามารถเริ่มต้นโดยเซิร์ฟเวอร์ได้ WebSocket รักษาการเชื่อมต่อถาวร แต่กินแบตเตอรี่มากกว่าและไม่เหมาะกับแอปทุกประเภท

การตรวจสอบและการดีบัก

ในการดีบัก Silent Push ให้ใช้ Console.app บน Mac และกรองตามชื่อแอป ระบบจะบันทึก silent push แต่ละรายการด้วยป้าย “background task” และระบุว่าการประมวลผลสำเร็จหรือไม่ บนอุปกรณ์ ให้ตรวจสอบผ่าน Settings → Developer → Background Modes Logging การติดตามฝั่งเซิร์ฟเวอร์ทำผ่าน APNS Feedback Service เพื่อระบุการแจ้งเตือนที่ไม่ได้รับการจัดส่ง

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

Silent Push แตกต่างจากการแจ้งเตือน push ปกติอย่างไร?

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

ให้เวลาเท่าใดในการประมวลผล Silent Push?

แอปได้รับ 30 วินาที เพื่อทำงานเบื้องหลังให้เสร็จ หลังจากเรียก completionHandler ระบบจะคืนอุปกรณ์กลับสู่โหมดสลีป หากไม่เรียก completionHandler ทันเวลา ระบบอาจหยุดจัดส่ง silent Push ไปยังแอปนี้

ทำไม Silent Push อาจไม่ถึงอุปกรณ์?

ระบบอาจเลื่อนการจัดส่งเมื่อแบตเตอรี่เหลือน้อย ในโหมดประหยัดพลังงาน หลังจากส่ง silent push บ่อยครั้ง หรือหากไม่ได้ใช้แอปเป็นเวลานาน นี่คือพฤติกรรมปกติของ iOS ที่ไม่เกี่ยวข้องกับข้อผิดพลาดในการนำไปใช้

สามารถส่ง Silent Push พร้อมกับการแจ้งเตือนปกติได้หรือไม่?

ได้ คุณสามารถรวม content-available: 1 พร้อมกับ alert — ในกรณีนี้ การแจ้งเตือนจะแสดงให้ผู้ใช้เห็นและแอปจะได้รับการเปิดใช้งานเบื้องหลังเพิ่มเติม แต่หากงาน คือการซิงโครไนซ์เบื้องหลังโดยไม่แสดงเท่านั้น จะไม่สามารถรวม alert ได้

จะตรวจสอบได้อย่างไรว่า Silent Push ถูกประมวลผลอย่างถูกต้อง?

ใช้ Console.app บน Mac เพื่อดูบันทึกงานเบื้องหลัง ส่ง silent push ทดสอบผ่าน APNS และตรวจสอบว่า didReceiveRemoteNotification ถูกเรียกด้วย completionHandler ที่ถูกต้อง ใน Xcode ให้ใช้เครื่องจำลองพร้อมการจำลองโหมดเบื้องหลัง

สรุป

  • Silent Push — กลไกการซิงโครไนซ์เบื้องหลังของ iOS ที่ส่งข้อมูลโดยไม่แสดงให้ผู้ใช้เห็น เปิดใช้งานแอปเป็นเวลา 30 วินาที
  • คีย์ content-available: 1 — แฟล็กบังคับในเพย์โหลด APNS ที่แยกความแตกต่างระหว่างการแจ้งเตือนแบบเงียบกับการแจ้งเตือนปกติ ต้องไม่มี alert, sound และ badge
  • การจัดส่งไม่รับประกัน — iOS ปรับการจัดส่ง silent push ให้เหมาะสมตามระดับแบตเตอรี่ ความถี่ และกิจกรรมของแอป อัตราการจัดส่งจริงคือ 70–80%
  • กรณีการใช้งาน — การดาวน์โหลดเนื้อหาเบื้องหลัง การอัปเดตวิดเจ็ต การทำให้แคชเป็นโมฆะ การซิงโครไนซ์การสมัครรับข้อมูล การอัปเดตป้าย
  • ข้อจำกัดความถี่ — ไม่เกิน 2–3 silent push ต่อชั่วโมงต่ออุปกรณ์ การเกินขีดจำกัดส่งผลให้ระบบบล็อกการจัดส่ง
  • iOS อาจเลื่อนหรือยกเลิก Silent Push เมื่อแบตเตอรี่เหลือน้อย ในโหมดประหยัดพลังงาน หรือหลังจากผู้ใช้ไม่มีการเคลื่อนไหวเป็นเวลานาน
  • Silent Push — เครื่องมือที่มีประสิทธิภาพสำหรับการปรับประสบการณ์ผู้ใช้ให้เหมาะสม แต่ไม่ควรใช้สำหรับการแจ้งเตือนที่สำคัญหรือรับประกัน

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

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

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

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