使用pusher,我们可以在不同的平台上聊天,包括android。在android中,我们希望在收到消息时向用户发送通知,即使应用程序未运行或我们不在聊天片段上。我已经了解了服务和广播接收器的工作原理,但似乎它们并不适合它。我们需要以某种方式实现某些事情,即只要在推送器中触发事件,我们就应该能够在应用程序的通知栏中发送通知。我们怎么做呢?
此致
答案 0 :(得分:0)
也许这可能是一个很好的解决方案=> https://developers.google.com/cloud-messaging/
答案 1 :(得分:0)
Pusher目前不提供对原生推送通知的支持。但是,Pusher确实提供了一种确定用户当前是否在线的方法。使用此机制,可以确定如何将消息发送给用户。
在线用户检测可以通过多种方式实现:
在这两种情况下,还可以使用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;
}