ฉันได้ดาวน์โหลดและตั้งค่า Android gcm-client และ gcm-demo-server (เซิร์ฟเวอร์ http) จาก http://code.google.com/p/gcm/ ฉันจัดการเพื่อรับข้อความดาวน์สตรีมในแอป gcm-client ของ Android ของฉันได้ ฉันได้ทำการทดสอบมากมายโดยมีลักษณะดังต่อไปนี้:
- เซิร์ฟเวอร์ใช้คีย์ API ของเบราว์เซอร์หรือคีย์ API ของเซิร์ฟเวอร์
- การเชื่อมต่อข้อมูลเป็นแบบ 3G หรือ WiFi
- ข้อความที่ส่งมี/ไม่รวมข้อมูลเพิ่มเติม
- ข้อความที่ส่งมี/ไม่มีคีย์การยุบ
- ข้อความที่ส่งมีการตั้งค่าความล่าช้าในขณะที่ Idle เป็นเท็จ
- ข้อความที่ส่งมีการตั้งค่า timeToLive เป็น 0 หรือ 5 นาที
- เซิร์ฟเวอร์ตั้งอยู่ในสองตำแหน่งที่แตกต่างกันภายในยุโรป
- แอป Android ทำงานในอุปกรณ์สองเครื่องที่อยู่ในสถานที่ต่างกันภายในยุโรป
ในทุกกรณี แอปจะได้รับข้อความที่ส่งหลังจากผ่านไป 25-30 วินาทีนับจากวินาทีที่ถูกส่ง อย่างไรก็ตาม ฉันได้ทดสอบแอปพลิเคชัน Android อื่นๆ ที่ใช้ข้อความดาวน์สตรีม GCM และในกรณีส่วนใหญ่ ข้อความจะมาถึงเกือบจะในทันที (‹5 วินาที)
มีอะไรที่ฉันสามารถเปลี่ยนแปลงในไคลเอนต์หรือเซิร์ฟเวอร์เพื่อให้ได้รับข้อความในแอปเร็วขึ้นหรือไม่?
ฉันยังลองใช้เซิร์ฟเวอร์ gcm XMPP (แอปพลิเคชัน Java ที่ใช้ Smack) ที่ให้ไว้ใน http://developer.android.com/google/gcm/ccs.html แต่ฉันไม่สามารถส่งข้อความใดๆ ได้ การตอบสนองที่ฉันได้รับจาก GCM Cloud Connection Server (CCS) แจ้งว่า "โครงการ XXXXXXXXX ไม่อยู่ในรายการที่อนุญาต" สาเหตุที่เป็นไปได้มากที่สุดคือการลงทะเบียน CCM ของฉันยังไม่ได้รับการอนุมัติตามที่อธิบายไว้ใน Google CCS (GCM) - โครงการไม่อยู่ในรายการที่อนุญาตพิเศษ ตามที่ฉันได้อ่านในเว็บไซต์ต่างๆ การอนุมัติมักจะใช้เวลานานกว่า 2-3 เดือน ดังนั้นฉันจึงอาจไม่สามารถทดสอบเซิร์ฟเวอร์ XMPP ได้ในเร็วๆ นี้
เป็นไปได้ไหมที่คุณจะรับข้อความเกือบทันใจได้โดยใช้เซิร์ฟเวอร์ XMPP เท่านั้น มีใครเคยมีประสบการณ์เกี่ยวกับความล่าช้าที่พบในการใช้เซิร์ฟเวอร์ XMPP หรือไม่?
ขอบคุณล่วงหน้า