การแจ้งเตือนแบบพุชทำงานอย่างไร


25

ฉันสงสัยว่าระบบแจ้งเตือนแบบพุชทำงานอย่างไร

มีการเชื่อมต่อ TCP / IP ที่ทำงานอยู่ที่ทำงานในพื้นหลังไปยังเซิร์ฟเวอร์ของ Google หรือไม่?


1
ดูWikipedia - ซึ่งเป็นที่ยอมรับกันยากที่จะอ่าน โดยทั่วไปแล้วใส่คำง่ายๆ: ไคลเอนต์เชื่อมต่อกับเซิร์ฟเวอร์และขอให้แจ้ง - และคำตอบก็จะ "ล่าช้า" เมื่อมีข้อมูล (หรือไม่ถ้าไม่มี) ซึ่งตามมาด้วย คำขอใหม่ ดังนั้นต้องใช้การเชื่อมต่อ TCP / IP แบบพื้นหลังอย่างถาวรที่แบตเตอรี่ของคุณ
Izzy

@ อิซซี่ที่ไม่ถูกต้องเพราะ (1) เอกสารบอกว่าเจตนาถูกสร้างขึ้นเมื่อมีข้อความมาถึงและ (2) สิ่งใดที่ทำงานบน Android สามารถเปิดการเชื่อมต่อที่ Android ไม่สามารถฆ่าได้
Michael

@Michael เอกสารไหน? ฉันไม่มีโปรแกรมเมอร์ Android ที่จะเข้าใจความลึกของมัน (และนี่คือกระดานสนทนา) ดังนั้นฉันอาจไม่สามารถโต้เถียงกับคุณที่นี่ ฉันได้ยินมาว่าสามารถสร้างผู้ฟังได้ (สำหรับการออกอากาศ) แบบไดนามิก - แต่ฉันไม่เคยได้ยินเกี่ยวกับความตั้งใจ (IMHO พวกเขาจะต้องประกาศในManifest) ฉันนึกภาพบางอย่างเกี่ยวกับบริการของ Google ที่ทำ "งานจริง" และแอพก็แค่ลงทะเบียน "ผู้รับ" คำอธิบายข้างต้นเป็นคำว่า "ทั่วไป" มากกว่าไม่ใช่เฉพาะ Android และฉันพยายามทำให้มันง่ายขึ้น)
Izzy

คำตอบ:


25

ใช่ Android ใช้การเชื่อมต่อที่ใช้งานอยู่หนึ่งครั้งกับเซิร์ฟเวอร์ของ Google แต่ไม่ได้ใช้พลังงานหรือข้อมูลมากนักเนื่องจากไม่มีการรับส่งข้อมูลจนกว่าจะมีบางอย่างส่งข้อความ GCM ไปยังแอปในโทรศัพท์ของคุณ มีการเชื่อมต่อทางโทรศัพท์เพียงครั้งเดียวเท่านั้นที่ใช้โดยแอปทั้งหมด: การติดตั้งแอปใหม่ที่ใช้ GCM ไม่ได้เพิ่มภาระใด ๆ เพิ่มเติม

ขั้นตอนแรกใน GCM คือเซิร์ฟเวอร์บุคคลที่สาม (เช่นเซิร์ฟเวอร์อีเมล) ส่งคำขอไปยังเซิร์ฟเวอร์ GCM ของ Google เซิร์ฟเวอร์นี้จะส่งข้อความไปยังอุปกรณ์ของคุณผ่านการเชื่อมต่อที่เปิดอยู่ ระบบ Android จะตรวจสอบข้อความเพื่อตรวจสอบว่ามีแอปใดบ้างและเริ่มแอพนั้น แอปจะต้องลงทะเบียนกับ Android เพื่อใช้ GCM และต้องได้รับอนุญาตที่เกี่ยวข้อง เมื่อแอปเริ่มทำงานมันอาจสร้างการแจ้งเตือนทันทีด้วยข้อมูลจากข้อความ ข้อความ GCM มีขนาด จำกัด มากดังนั้นแอปอาจเปิดการเชื่อมต่อปกติกับเซิร์ฟเวอร์บุคคลที่สามเพื่อรับข้อมูลเพิ่มเติม (ตัวอย่างเช่นการดาวน์โหลดส่วนหัวของอีเมลใหม่)

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


ฉันจะเพิ่มเพียง 1 ความคิดเห็น: ข้อความ GCM สามารถมีขนาด 4KByte ดังนั้นพวกเขาจึงไม่ จำกัด developer.android.com/google/gcm/gcm.html
Moszi

การเชื่อมต่อนี้เปิดค้างอยู่ที่ใด กิจกรรมหรือบริการ Android ใด ๆ สามารถถูกฆ่าได้ตลอดเวลา
Michael

1
ขอบคุณสำหรับข้อมูล. ตามคำถามของฉันคุณรู้หรือไม่ว่า URL ของซ็อกเก็ตที่เปิดอยู่คืออะไร (URL ของการเชื่อมต่อจากอุปกรณ์ไปยังเซิร์ฟเวอร์ GCM ที่เปิดและใช้สำหรับข้อมูลการแจ้งเตือน)
Sabeti

6

Android OS กำลังใช้ GCM (Google Cloud Messaging) สำหรับ Push Notification WS คุณสามารถรับแนวคิดที่ดีกว่าที่นี่ ; มันจะให้ภาพรวมทางสถาปัตยกรรมเกี่ยวกับบริการแจ้งเตือนแบบพุชเต็มพร้อมวงจรชีวิต

หวังว่ามันจะช่วย


มีวิธีการทำสิ่งที่คล้ายกันโดยไม่ต้องพึ่งพาเซิร์ฟเวอร์ของ Google หรือไม่?
Michael

@Michael ใช้บริการ Amazon Cloud หรือไม่ พวกเขาดูเหมือนจะมีแนวคิดเปรียบเทียบ แต่สำหรับ "วิธีการ" นี่คือสถานที่ที่ไม่ถูกต้อง;)
Izzy

1

ตอบกลับคำถามสายเก่า แต่ควรใส่ไว้

GCM เลิกใช้แล้วเมื่อเดือนเมษายน 2018 และ Google ได้แนะนำให้ใช้ FCM แทนซึ่งคล้ายกับ GCM

  1. เราไม่จำเป็นต้องเขียนตรรกะการลงทะเบียนหรือลองใหม่อีกครั้งของเราเอง
  2. คุณสามารถใช้ Firebase Notifications โซลูชั่นการแจ้งเตือนแบบไร้เซิร์ฟเวอร์พร้อมคอนโซลเว็บที่ให้ทุกคนส่งการแจ้งเตือนไปยังกลุ่มเป้าหมายที่เฉพาะเจาะจงตามข้อมูลเชิงลึกของ Firebase Analytics
  3. มันมีโครงสร้างพื้นฐานหลักของ GCM
  4. ข้อความเดียวสามารถถ่ายโอนข้อมูลได้สูงสุด 4KB ไปยังแอปไคลเอ็นต์

1
จากมุมมองของแอป FCM ไม่คล้ายกับ GCM มันเหมือนกัน FCM เป็นเพียงชื่อใหม่ของ GCM
Robert
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.