3 TÌM HIỂU GOOGLE CLOUD MESSAGING (GCM) 1Giới thiệu Google Cloud Messaging
3.10 Thời gian sống của 1 tin nhắn
Khi máy chủ bên thứ 3 gửi 1 tin nhắn đến GCM và nhận được ID thông báo trở lại, nó không có nghĩa rằng thông điệp đã được gửi đến thiết bị. Thay vào đó,có nghĩa là nó đã được chấp nhận để nhận. Những gì xảy ra với các tin nhắn sau khi nó được chấp nhận phụ thuộc vào nhiều yếu tố.
Trong trường hợp thiết bị được kết nối với GCM , màn hình đang mở và không có hạn chế điều tiết thì thông báo sẽ gửi ngay lập tức.
Nếu thiết bị được kết nối nhưng trong trạng thái không hoạt động ( idle), thông báo vẫn sẽ được gửi ngay lập tức trừ khi được thiết lập cờ delay_while_idle . Nếu không nó sẽ được lưu trữ trong các máy chủ GCM cho đến khi thiết bị được đánh thức (awake) và ở đó cờ collapse_key có vai trò:
Nếu có tin nhắn như collapse key (và registration ID) được lưu giữ và chờ đợi để gửi đi, các tin nhắn cũ sẽ bị loại bỏ và các tin nhắn mới sẽ chiếm lại không gian đó.Nếu Collapse key không được thiết lập thì tin nhắn cũ và mới sẽ được lưu trữ để gửi đi.
Giới hạn về số tin nhắn được lưu trữ mà không bị thu hẹp (collapsing), giới hạn hiện tại là 100. Nếu đạt tới giới hạn trên tất cả tin nhắn được lưu sẽ bị loại bỏ. Khi thiết bị hoạt động trở lại (online) nó sẽ nhận được 1 thông báo đặc biệt chỉ ra rằng đã có giới hạn xảy ra. Sau đó ứng dụng có thể xử lý được thường là yêu cầu đồng bộ mọi thứ (full sync).
Nếu thiết bị không kết nối với GCM, tin nhắn sẽ được lưu trữ cho đến khi kết nối được thiết lập .Khi một kết nối được thiết lập, GCM sẽ đẩy tất cả các thông điệp cấp phát chính thức cho các thiết bị, phụ thuộc vào cờ delay_while_idle . Nếu thiết bị không được kết nối một lần nữa, thông báo cuối cùng sẽ bị loại bỏ từ GCM lưu trữ. Thời gian chờ mặc định là 4 tuần, trừ khi cờ time_to_live được thiết lập.
Cuối cùng, khi GCM gửi một thông điệp tới các thiết bị mà ứng dụng trên thiết bị đã được gỡ bỏ cài đặt, GCM sẽ loại bỏ tin nhắn đó ngay lập tức và vô hiệu registration ID. thiết bị đó sẽ nhận được một lỗi NotRegistered .