当android聊天应用程序处于后台时,如何接收消息作为通知
我正在开发一个android即时聊天应用程序。我使用socket.io-client库实现了它。这里一切正常。当应用程序将由不同的用户在不同的设备上使用时,可以使用socket将消息从一个用户发送到另一个用户。但这只有在应用程序处于活动状态时才可能。如果应用程序在另一端未处于活动状态,它工作不正常。我想通知用户消息已与WatsApp一样到达。如何使用套接字实现此目的 以下是我的侦听器的代码: 我必须处理两个通知案例: 1.当应用程序处于后台时 2.当来自用户C的消息到达时,当应用程序在前台但用户A正忙于用户B时当android聊天应用程序处于后台时,如何接收消息作为通知,android,socket.io,Android,Socket.io,我正在开发一个android即时聊天应用程序。我使用socket.io-client库实现了它。这里一切正常。当应用程序将由不同的用户在不同的设备上使用时,可以使用socket将消息从一个用户发送到另一个用户。但这只有在应用程序处于活动状态时才可能。如果应用程序在另一端未处于活动状态,它工作不正常。我想通知用户消息已与WatsApp一样到达。如何使用套接字实现此目的 以下是我的侦听器的代码: 我必须处理两个通知案例: 1.当应用程序处于后台时 2.当来自用户C的消息到达时,当应用程序在前台但用户
请帮助我解决我的问题。按此处所述创建后台服务, 写入此服务中的套接字连接代码,从启动器活动启动服务,并通过从其他活动绑定到服务来使用该服务 当应用程序启动时,您应该使用START_STICKY运行自己的服务,并且在该服务中必须启动一个线程。参考请参考android服务文档 2另一种方法是使用GCM推送通知。在onResume和onPasue中,即在前台,如果用户转到后台,则onResume连接到socket.io服务器,然后断开用户与socket.io服务器的连接。如果用户从socket.io服务器断开连接,则返回到GCM推送通知,并通知用户。尝试以下操作:
public Emitter.Listener handleIncomingMessages = new Emitter.Listener() {
@Override
public void call(final Object... args) {
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
JSONObject data = (JSONObject) args[0];
String message = null;
String imageText;
try {
message = data.getString("message").toString();
Log.v("messageeeeeeeeeee",message);
} catch (JSONException e) {
// return;
}
addMessage(message);
try {
imageText = data.getString("image");
addImage(decodeImage(imageText));
} catch (JSONException e) {
//retur
}
}
});
}
};
您可以创建后台服务并使用套接字保持连接的活动状态,也可以使用推送通知,即如果其他用户未连接到套接字,服务器应发送推送消息。感谢您的回复。您可以发送一些链接给我学习吗?我已使用推送通知实现了相同的功能。请在中进行解释详细信息。按此处所述创建后台服务,写入此服务中的套接字连接代码,从启动程序活动启动服务,并通过从其他活动绑定到该服务来使用该服务。请告诉我是否必须使用IntentService或BoundService或service类来实现该概念。您必须使用service而不是IntentService。服务也称为绑定服务
public Emitter.Listener handleIncomingMessages = new Emitter.Listener() {
@Override
public void call(final Object... args) {
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
JSONObject data = (JSONObject) args[0];
String message = null;
String imageText;
try {
message = data.getString("message").toString();
Log.v("messageeeeeeeeeee",message);
} catch (JSONException e) {
// return;
}
addMessage(message);
try {
imageText = data.getString("image");
addImage(decodeImage(imageText));
} catch (JSONException e) {
//retur
}
}
});
}
};