0

我按照这些教程开发了一个即时消息应用程序:

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 之前关闭活动?

谢谢你,安德里亚

4

1 回答 1

2

不是真的,你可能应该只做一个进度指示器,但如果你杀了这个应用程序,我们现在就没有办法了。实现这一点的一种方法是在您的应用程序中拥有一个始终运行的“服务”模式,而不是处理 MessagingActivity 中的所有内容。然后你可以继续在后台运行。

于 2015-07-06T14:21:28.650 回答