2013-06-01 34 views
12

Tôi thực sự đã cố gắng tìm một giải pháp cho vấn đề này nhưng không. Có một số chủ đề liên quan đến khái niệm này, nhưng tôi đã không tìm thấy một giải pháp toàn diện.Thông báo đẩy XMPP (Openfire) Android

Tôi có một máy chủ có Openfire gửi tin nhắn. Khi cả hai người dùng trực tuyến, không có vấn đề gì. Tuy nhiên, khi người dùng đang ngoại tuyến, tôi muốn gửi thông báo đẩy, như trong Whatsapp. Tôi nghe nói rằng Whatsapp và các ứng dụng IM khác sử dụng một phiên bản sửa đổi của ejabber để gửi thông báo đẩy, nhưng không thể tìm ra cách.

Một khả năng là sử dụng GCM, nhưng tôi không chắc chắn liệu đây có phải là cách phù hợp hay không. Ngoài ra tôi muốn tránh bỏ phiếu, vì lợi ích của việc không xả pin.

Có ai biết một số giải pháp cho điều này hoặc có ví dụ không?

Trả lời

2

Vâng, bạn có thể sử dụng GCM với XMPP. GCM Cloud Connection Server mới cho phép bạn sử dụng giao thức XMPP cho liên lạc hai chiều (Đám mây tới Thiết bị và Thiết bị với Đám mây) giữa máy chủ và ứng dụng Android của bạn.

Các GCM đám mây kết nối Server (CCS) cho phép các máy chủ của bên thứ ba để giao tiếp với các thiết bị Android bằng cách thiết lập một kết nối TCP dai dẳng với máy chủ của Google bằng cách sử dụng giao thức XMPP. Giao tiếp này không đồng bộ và hai chiều.

+0

Tôi sẽ thử. Tôi thấy đây có thể là một giải pháp tốt. Một khi giải pháp của bạn đã làm việc cho tôi, tôi sẽ chấp nhận câu trả lời của bạn :) – Max

+0

Vâng, nó đáng để thử, nhưng đừng quên nó là một tính năng dùng thử, vì vậy nó có thể chưa sẵn sàng cho sản xuất. – Eran

+0

Tôi đã hy vọng tránh sử dụng GCM, vì tài khoản google là cần thiết trên thiết bị để nhận thông báo đẩy, tuy nhiên tôi thấy đây là tùy chọn duy nhất vào lúc này. Cảm ơn một lần nữa cho câu trả lời của bạn. – Max

-3

Khi tự động mở, tin nhắn sẽ được người dùng nhận khi người dùng trực tuyến. Vì vậy, không phải lo lắng gửi tin nhắn cho người dùng ngoại tuyến và khi người dùng gửi tin nhắn trực tuyến sẽ tự động được đẩy tới người dùng.

+0

Điều đó đúng, tuy nhiên tôi muốn tạo một Messenger tức thời, yêu cầu thông báo đẩy trong trường hợp người dùng đang ngoại tuyến. Tôi muốn người dùng được thông báo khi anh ấy được gửi một tin nhắn (thông báo đẩy). – Max

+1

Tại sao bạn không chạy dịch vụ nền và giữ kết nối với OpenFire? –

8

Tôi đang nghiên cứu về openfire và tìm thấy một số tùy chọn tốt mà tôi muốn chia sẻ với bạn. Tôi tìm thấy một plugin trong github và tôi sẽ kiểm tra nó trong tuần này. Có vẻ như đó sẽ là một giải pháp tốt để mục tiêu của bạn và tôi: https://github.com/meisterfuu/Openfire-GCM/

Một lựa chọn khác là sử dụng CallbackOnOffline Plugin mà các cuộc gọi một URL được chỉ định với Để Từ các thông số. Url này có thể là điểm cuối trong dịch vụ web của bạn và với dữ liệu đó (Tới và Từ), bạn có thể lấy Id được liên kết để đẩy trong cơ sở của mình và đã thực hiện một lần đẩy.

https://www.igniterealtime.org/projects/openfire/plugins.jsp

+0

Openfire-GCM không hoạt động. Bạn có lẽ có một phiên bản cập nhật? – Pierre