Làm thế nào để thông báo đẩy hoạt động?


25

Tôi tự hỏi làm thế nào là hệ thống thông báo đẩy làm việc?

Có kết nối TCP / IP đang hoạt động chạy trong nền tới các máy chủ của Google không?


1
Xem Wikipedia - mà phải thừa nhận là một chút khó đọc. Về cơ bản, và nói một cách dễ dàng: Máy khách kết nối với máy chủ và yêu cầu được thông báo - và câu trả lời sẽ bị "trì hoãn" khi có thông tin (hoặc không bao giờ nếu không có), sau đó được theo sau bởi yêu cầu mới. Vì vậy, có, điều này đòi hỏi một kết nối TCP / IP nền cố định ở pin của bạn.
Izzy

@ Tôi không thể đúng, bởi vì (1) các tài liệu nói rằng Ý định được tạo khi tin nhắn đến và (2) những gì chạy trên Android có thể giữ kết nối mở mà Android không bao giờ có thể giết được?
Michael

@Michael Những tài liệu nào? Tôi không phải là lập trình viên Android để hiểu sâu về nó (và đây không phải là bảng thảo luận), vì vậy tôi có lẽ không thể tranh luận với bạn ở đây. Tôi đã nghe nói rằng người nghe (để phát sóng) có thể được thiết lập một cách linh hoạt - nhưng tôi chưa bao giờ nghe điều đó về ý định (IMHO họ phải được khai báo trong Manifest). Tôi cũng có thể tưởng tượng một số dịch vụ của Google đang thực hiện "công việc thực tế" và ứng dụng chỉ cần đăng ký một "người nhận". Mô tả ở trên là "chung chung" hơn, không dành riêng cho Android và tôi đã cố gắng làm cho nó đơn giản;)
Izzy

Câu trả lời:


25

Có, Android giữ một kết nối hoạt động với các máy chủ của Google, nhưng nó không sử dụng nhiều năng lượng hoặc dữ liệu, bởi vì không có lưu lượng nào được gửi dọc theo nó cho đến khi có thứ gì đó gửi tin nhắn GCM đến một ứng dụng trên điện thoại của bạn. Chỉ có một kết nối trên điện thoại, được sử dụng bởi tất cả các ứng dụng: cài đặt ứng dụng mới sử dụng GCM không thêm bất kỳ tải nào.

Bước đầu tiên trong GCM là máy chủ của bên thứ ba (chẳng hạn như máy chủ email) gửi yêu cầu đến máy chủ GCM của Google. Máy chủ này sau đó gửi tin nhắn đến thiết bị của bạn, thông qua kết nối mở đó. Hệ thống Android xem thông báo để xác định ứng dụng nào và bắt đầu ứng dụng đó. Ứng dụng phải được đăng ký với Android để sử dụng GCM và ứng dụng phải có sự cho phép liên quan. Khi ứng dụng khởi động, nó có thể tạo thông báo ngay lập tức với dữ liệu từ tin nhắn. Tin nhắn GCM có kích thước rất hạn chế, vì vậy, ứng dụng có thể mở kết nối bình thường đến máy chủ của bên thứ ba để có thêm thông tin (ví dụ: tải xuống tiêu đề của email mới).

Ưu điểm của việc sử dụng thông báo đẩy là các ứng dụng không phải chạy định kỳ để kiểm tra dữ liệu mới, tiết kiệm cả năng lượng và dữ liệu. Ưu điểm của việc có một cơ chế tập trung như GCM là thiết bị chỉ cần một kết nối mạng mở và hệ thống GCM của Android là điều duy nhất cần duy trì để chạy, thay vì mỗi ứng dụng phải chạy trong nền để giữ mạng riêng kết nối với máy chủ của riêng mình.


Tôi chỉ thêm 1 bình luận: Tin nhắn GCM có thể có kích thước 4KByte, vì vậy chúng không bị giới hạn. developer.android.com/google/gcm/gcm.html
Moszi

Điều gì đang giữ kết nối này mở? Bất kỳ hoạt động hoặc dịch vụ Android có thể bị giết bất cứ lúc nào.
Michael

1
Cảm ơn bạn về thông tin. Theo câu hỏi của tôi , bạn có biết URL của một ổ cắm đã mở là gì không? (URL của kết nối từ thiết bị đến máy chủ GCM được mở và sử dụng cho dữ liệu thông báo)
Sabeti

6

Hệ điều hành Android hiện đang sử dụng GCM (Google Cloud Messaging) cho WS Thông báo đẩy. Bạn có thể có được ý tưởng tốt hơn ở đây ; nó sẽ cung cấp cho bạn Tổng quan về kiến ​​trúc về Dịch vụ thông báo đẩy toàn bộ với Vòng đời của nó.

Hy vọng nó sẽ giúp.


Có cách nào để làm điều tương tự mà không phải phụ thuộc vào máy chủ của Google không?
Michael

@Michael Sử dụng dịch vụ Amazon Cloud? Họ dường như có một khái niệm so sánh. Nhưng đối với "làm thế nào để", đây là vị trí sai;)
Izzy

1

Trả lời muộn cho câu hỏi cũ nhưng đáng để đặt nó.

GCM đã không còn được sử dụng vào tháng 4 năm 2018 và google đã khuyến nghị sử dụng FCM thay vì tương tự như GCM.

  1. chúng ta không cần phải viết đăng ký riêng hoặc đăng ký thử lại logic
  2. Bạn có thể sử dụng Thông báo Firebase, giải pháp thông báo không có máy chủ với bảng điều khiển web cho phép mọi người gửi thông báo đến đối tượng cụ thể dựa trên thông tin chi tiết về Firebase Analytics.
  3. Nó có cơ sở hạ tầng cốt lõi của GCM.
  4. Một tin nhắn có thể chuyển tải trọng lên tới 4KB cho ứng dụng khách.

1
Từ quan điểm ứng dụng FCM không giống với GCM, nó giống hệt nhau. FCM chỉ là tên mới của GCM.
Robert
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.