使用推送器进行聊天的Android通知

时间:2015-08-26 05:19:59

标签: android notifications pusher

使用pusher,我们可以在不同的平台上聊天,包括android。在android中,我们希望在收到消息时向用户发送通知,即使应用程序未运行或我们不在聊天片段上。我已经了解了服务和广播接收器的工作原理,但似乎它们并不适合它。我们需要以某种方式实现某些事情,即只要在推送器中触发事件,我们就应该能够在应用程序的通知栏中发送通知。我们怎么做呢?

此致

3 个答案:

答案 0 :(得分:0)

也许这可能是一个很好的解决方案=> https://developers.google.com/cloud-messaging/

答案 1 :(得分:0)

Pusher目前不提供对原生推送通知的支持。但是,Pusher确实提供了一种确定用户当前是否在线的方法。使用此机制,可以确定如何将消息发送给用户。

  1. 如果他们在线,请通过Pusher发送消息
  2. 如果他们处于离线状态,请通过电子邮件,短信或本机推送通知
  3. 发送消息

    在线用户检测可以通过多种方式实现:

    1. 使用Presence channels并设置WebHooks,以便您的服务器知道用户何时订阅/取消订阅该频道。
    2. 为每个用户提供唯一的渠道。如果频道被占用,则意味着它们在线。如果频道空置,则他们不在线。当频道被占用(用户上线)或腾空(用户下线)时,您也可以立即使用WebHooks。
    3. 在这两种情况下,还可以使用Pusher HTTP API和query channel state来确定某个频道是否被占用(用户是否在线)以及订阅了在线频道的成员。 / p>

      Enabling Smart Notifications上还有一篇博客文章,演示了频道查询。当用户在线时,消息通过Pusher发送。当他们离线时,他们会通过SendGrid发送电子邮件。

答案 2 :(得分:0)

这是可能的。只需使用全局“线程”代替“runOnUiThread”。这是我的服务类代码。如果仍然遇到任何问题,请随时提出您的问题。

Thread readthread;
@Override
public int onStartCommand(Intent intent, int flags, int startId) {

    Pusher pusher = new Pusher("faa685e4bb3003eb825c");

    pusher.connect();

    Channel channel = pusher.subscribe("messages");

    channel.bind("new_message", new SubscriptionEventListener() {
        @Override
        public void onEvent(String channelName, String eventName, final String data) {
            readthread = new Thread(new Runnable() {
                @Override
                public void run() {
                    Log.i("Successss","Pusher run on Background");
                    Gson gson = new Gson();
                    Message message = gson.fromJson(data, Message.class);
                    // Notification(message);
                    // Write your code here. 
                }

            });

            readthread.start();
        }

    });
    return START_STICKY;
}