2012-12-20 45 views
24

Tôi đang phát triển ứng dụng khách di động cho dịch vụ gửi email. Một trong những tính năng chính là thông báo về tin nhắn mới trong hộp thư. Theo hướng dẫn của kiến ​​trúc GCM, chúng tôi đang sử dụng "Pusher" có trách nhiệm gửi thư tới máy chủ Google khi chúng tôi nhận được thư mới. Vấn đề là quá trình thử nghiệm đã báo cáo về các vấn đề nghiêm trọng với việc gửi thông báo đẩy tới các thiết bị.Theo dõi phân phối GCM của Android

Vì vậy, câu hỏi: có cách tiếp cận để theo dõi số liệu thống kê trung bình về tỷ lệ phần trăm gửi thông báo đẩy, thời gian, v.v ... không? Hoặc có thể ai đó có kinh nghiệm về cách thiết lập môi trường thử nghiệm để giám sát hiệu quả xem có bao nhiêu thông báo bị mất trong khi ứng dụng hoạt động?

Tất cả "mẹo & thủ thuật" liên quan đến trải nghiệm Android GCM cải tiến đều được chào đón.

Trả lời

0

Kể từ thời điểm đó Google đã cung cấp các nhà phát triển với công cụ giám sát tiên tiến.

Công cụ chẩn đoán Gcm có sẵn trong bảng điều khiển dành cho nhà phát triển trên Google Play. Thông tin bổ sung ở đây https://support.google.com/googleplay/android-developer/answer/2663268

Vì vậy, bạn có thể dễ dàng theo dõi trạng thái tin nhắn cụ thể thông qua mã thông báo đăng ký.

2

Google không cung cấp các thống kê này cho bạn. Có một số thống kê có sẵn trên bảng điều khiển dành cho nhà phát triển Android. Điều này chỉ hiển thị số lượng tin nhắn và đăng ký.

Bạn sẽ phải triển khai bộ sưu tập dữ liệu của riêng mình, điều này có thể được thực hiện khá dễ dàng. Bạn có thể ghi lại thời gian & id của mỗi tin nhắn được gửi và báo cáo ứng dụng khách Android của bạn về máy chủ của bạn với thời gian nhận được tin nhắn. Sau đó, bạn có thể lưu trữ dữ liệu trên máy chủ của mình và truy vấn nếu cần.

+0

Có, bạn đã đúng. Và tôi đang tìm cách tiếp cận hiệu quả về cách làm cho nó có thể. – rus1f1kat0R

+0

Bạn đang sử dụng chương trình phụ trợ nào? – Patrick

+0

Là một chương trình phụ trợ, chúng tôi đang sử dụng bộ máy chủ phức tạp bao gồm máy chủ "pusher" chuyên dụng chịu trách nhiệm gửi tin nhắn tới các thiết bị thông qua dịch vụ Google (apple, Microsoft). – rus1f1kat0R

21

Google tuyên bố rằng quá trình xử lý tại máy chủ GCM của họ mất ít hơn một phần nghìn giây. Liên kết bên dưới để có video tuyệt vời về GCM từ nhà phát triển của Google. Và đó là coz đáng tin cậy tôi có thể nhận được thông báo đẩy gần như ngay lập tức bằng cách sử dụng máy chủ của công ty tôi để thiết bị của tôi bây giờ.

http://www.youtube.com/watch?v=YoaP6hcDctM

Họ không đảm bảo giao hàng, nhưng họ cố gắng cho một tối đa 4 tuần để cung cấp những thông điệp tùy thuộc vào thời gian bạn thiết lập trong thông điệp bạn gửi đến các máy chủ GCM của Google và nếu bạn muốn để cho Google giữ dữ liệu để gửi tin nhắn cuối cùng cho thiết bị trong trường hợp thiết bị ngoại tuyến khi tin nhắn được gửi đi.

Tuy nhiên, có một số điều kiện nhất định mà thông điệp GCM không được gửi.

  1. Dữ liệu nền được bỏ chọn trong Cài đặt tài khoản và đồng bộ hóa.
  2. Trước 4.0.4. (ICS), tài khoản Google trên thiết bị là điều kiện tiên quyết cho GCM. Có thể, Người dùng không đăng nhập vào tài khoản Google của họ.
+0

Cảm ơn rất nhiều thông tin bổ sung về GCM! – rus1f1kat0R

+0

Bạn cũng biết thời gian gửi có phụ thuộc vào số lượng tin nhắn đã gửi mỗi ngày không? Điều quan trọng là vì chúng tôi có rất nhiều người trong số họ? – rus1f1kat0R

+0

Bạn có muốn gửi cùng một tin nhắn tới nhiều thiết bị không? Nếu bạn làm như vậy, bạn có thể phát đa hướng cùng một tin nhắn tới tối đa 1000 thiết bị cùng một lúc. –

6

Cách duy nhất để làm như vậy là báo cáo lại cho máy chủ của bạn bằng dấu thời gian của lần nhận được.

Bạn có thể

  1. Báo cáo lại cho máy chủ khi bạn nhận được thông báo phục vụ GCM của bạn. Để thực hiện, bạn sẽ phải thêm một id đẩy cho các thông báo đẩy của bạn và gửi id cùng với các dữ liệu đẩy. Khách hàng sẽ phải nhận được dấu thời gian sau khi nhận được tin nhắn và gửi lại cùng với id thông báo. Một kịch bản php đơn giản có thể được thực hiện (khi bạn gửi thông báo đẩy, bạn đặt thời gian của gửi thông báo và sau khi nhận được dấu thời gian của thiết bị, nó sẽ đặt nhận thông báo. cơ sở dữ liệu (được in đậm).Trong cách tiếp cận này, bạn có thể sẽ không quan tâm nhiều đến các lỗi vì rất có thể thiết bị sẽ có kết nối khi nhận được thông báo và yêu cầu của nó đối với máy chủ của bạn sẽ đi qua.

  2. Lưu danh sách các thông báo nhận được trong ứng dụng của bạn và dấu thời gian của chúng. Và khi quá trình đồng bộ hóa hoàn tất, hãy gửi dữ liệu này trong hoạt động đồng bộ hóa của bạn. Đây là phương pháp tiếp cận cuối cùng nhưng dữ liệu của máy chủ của bạn sẽ không phải là thời gian thực như cách tiếp cận đầu tiên. Tuy nhiên, yêu cầu bổ sung không được yêu cầu từ phía khách hàng nhưng lưu các thông báo nhận được và dấu thời gian của họ là.

Tất cả trong tất cả, bạn sẽ phải theo dõi các thông báo được gửi bằng một thông báo-id và thời gian của họ gửi (gửi thông báo) và nhận thời gian của họ (nhận thông báo) . Một truy vấn đơn giản sẽ giúp bạn phân tích dữ liệu này.

5

Google đã thêm hỗ trợ để bạn có thể nhận được biên lai giao hàng từ đám mây kết nối Server (CCS):

Bạn có thể sử dụng tin nhắn ngược dòng để có được biên lai giao hàng (gửi từ CCS đến máy chủ ứng dụng của bên thứ 3 của bạn) khi một thiết bị xác nhận rằng nó nhận được một tin nhắn được gửi bởi CCS.

Để bật tính năng này, thông báo mà máy chủ ứng dụng bên thứ ba của bạn gửi tới CCS phải bao gồm trường có tên "delivery_receipt_requested". Khi trường này được đặt thành true, CCS sẽ gửi biên nhận giao hàng khi thiết bị xác nhận rằng nó nhận được một thông báo cụ thể.

https://developer.android.com/google/gcm/ccs.html#receipts

+1

Đôi khi CCS không gửi delivery_receipt và tôi không thể tìm thấy một con đường tái tạo. GCM có cho phép quarantie gửi delivery_receipt khi delivery_receipt_requested được đặt đúng không. –