2014-06-26 25 views
5

Tôi có máy chủ web gửi qua thông báo PHP với GCM đến ứng dụng Android đã phát triển của tôi tới người dùng. Có khoảng 3000 người dùng, một số người dùng nhận được khoảng 20 thông báo mỗi ngày.Phản hồi của Máy chủ Nhắn tin qua đám mây của Google chậm (1 phút)

Nó hoạt động hoàn hảo trong hơn 1 năm, nhưng kể từ 5 ngày tôi thấy rằng thời gian phản hồi của cuộc gọi đến "https://android.googleapis.com/gcm/send" là 1 phút thay vì ít hơn 1 giây trước đó. Và vẫn còn tất cả các thông báo đến người dùng.

Nó được phát triển theo cách sau: http://www.androidhive.info/2012/10/android-push-notifications-using-google-cloud-messaging-gcm-php-and-mysql/

tôi vô hiệu hóa việc gửi thông báo cho hơn 1 ngày. Sau đó, bắt đầu lại, và trong vài phút googleapis trả lời như thường lệ, nhưng sau đó lại một lần nữa là 60 giây.

Có vẻ như Google đang thực hiện mục đích này, nhưng tôi không biết tại sao?

+0

Bạn có đang sử dụng tính năng trả lại hết hạn nếu gửi không thành công? Trong java ví dụ có một phương thức như * send (Message message, String registrationId, int retries) *, * Lưu ý: phương pháp này sử dụng hàm mũ back-off để thử lại trong trường hợp không có dịch vụ và do đó có thể chặn chuỗi gọi trong nhiều giây . * Google giải thích về [Vai trò của Máy chủ ứng dụng của bên thứ ba] (http://developer.android.com/google/gcm/server.html#role). Google có thể phát hiện quá nhiều lưu lượng truy cập từ máy chủ của bạn và đang đặt giới hạn. – AlexBcn

Trả lời

3

thử chạy:

curl https://apis.google.com/ 

curl https://apis.google.com/ --ipv4 

nếu phiên bản thứ 2 chạy nhanh hơn, chỉ cần tắt ipv6 trên máy chủ của bạn, có thể ISP của máy chủ của bạn không hỗ trợ IPv6, dẫn đến mất 1-2 phút trước khi hết thời gian và chuyển sang IPv4 lần nữa.

Một vấn đề tôi chạy vào thời gian gần đây là throttling GCM: how to avoid throttling

cơ bản google sẽ throttle báo đẩy của bạn nếu bạn gửi quá nhiều tin nhắn đến cùng một người dùng trong một khoảng thời gian ngắn. điều này là để "tiết kiệm pin" và "băng thông" (có thể là của họ) ... hãy nhớ nếu bạn muốn gửi dữ liệu đến thiết bị nhiều hơn 10 lần một phút và trong khi người dùng thực sự đang sử dụng ứng dụng, nó luôn tốt hơn mở kết nối TCP trực tiếp giữa người dùng và máy chủ của bạn :)

+1

Cảm ơn! Tôi vừa di chuyển các máy chủ và đã cho tôi một vài ngày để nhận ra rằng IPv6 đã gây ra vấn đề này. Bạn rock sir :) –

+0

Tuyệt vời; cảm ơn!! Lời khuyên ipv4 này chỉ giải quyết được một vấn đề mà tôi không thể tìm ra và tìm thấy bất cứ điều gì ở bất cứ nơi nào khác. – Arthur

+0

Tôi gặp vấn đề tương tự! IPv6 đã gây ra sự cố. Cảm ơn nó đã lưu ngày của tôi –

0

Làm cách nào bạn triển khai mã của mình để gửi cho tất cả 3000 người dùng, Google cho phép 1000 người dùng theo yêu cầu. Hiển thị một số mã để tôi giúp bạn.

+0

Tôi không. Các tin nhắn không gửi đến tất cả người dùng. Người dùng có thể xác định bằng bộ lọc của riêng họ. Nó được sử dụng trong một dịch vụ máy nhắn tin. – JarnoQ

Các vấn đề liên quan