我已按照这些教程开发了即时通讯应用程序:
https://www.sinch.com/tutorials/android-messaging-tutorial-using-sinch-and-parse/
和
https://www.sinch.com/tutorials/send-push-notifications-android-messaging-app-using-gcm/
一切都很好。在用户手机中,我尝试向另一个停止MessageService的用户(在他的设备上)发送即时消息。用户获得通知。 这是我的方法的实现:
@Override
public void onShouldSendPushData(MessageClient client, Message message, List<PushPair> pushPairs) {
final WritableMessage writableMessage = new WritableMessage(message.getRecipientIds().get(0), message.getTextBody());
ParseQuery userQuery = ParseUser.getQuery();
userQuery.whereEqualTo("objectId", writableMessage.getRecipientIds().get(0));
ParseQuery pushQuery = ParseInstallation.getQuery();
pushQuery.whereMatchesQuery("idutente", userQuery);
// Send push notification to query
ParsePush push = new ParsePush();
push.setQuery(pushQuery); // Set our Installation query
push.setMessage("sent you a message");
push.sendInBackground(new SendCallback() {
@Override
public void done(ParseException e) {
if(e==null){
}else{
e.printStackTrace();
}
}
});
}
问题如下:
如果我在MessagingActivity中,我会写一条消息,然后在onShouldSendPushData被调用之前退出活动(例如写一条快速消息然后我点击后退按钮退出应用程序)推送通知永远不会被触发(显然因为没有及时调用onShouldSendPushData)。 有没有办法在关闭应用程序之前等待onShouldSendPushData被触发?是否有一个监听器或一些属性我可以检查以防止在onShouldSendPushData被调用之前关闭活动?
谢谢你, 安德烈
答案 0 :(得分:2)
不是真的,你应该只是制作一个进度指示器,但如果你杀了应用程序,我们现在就没办法了。实现这一目标的一种方法是拥有一个服务&#34;您应用程序中始终运行的模式,因此不是处理MessagingActivity中的所有内容。然后你可以继续在后台运行。