Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 因为onShouldSendPushData需要几秒钟才能被触发_Android_Parse Platform_Instant Messaging_Sinch - Fatal编程技术网

Android 因为onShouldSendPushData需要几秒钟才能被触发

Android 因为onShouldSendPushData需要几秒钟才能被触发,android,parse-platform,instant-messaging,sinch,Android,Parse Platform,Instant Messaging,Sinch,我根据以下教程开发了一个即时消息应用程序: 及 一切正常。我曾尝试从用户手机向另一个用户发送即时消息,消息服务已停止(在他的设备上)。用户获得通知。 这是我的方法的实现: @Override public void onShouldSendPushData(MessageClient client, Message message, List<PushPair> pushPairs) { final WritableMessag

我根据以下教程开发了一个即时消息应用程序:

一切正常。我曾尝试从用户手机向另一个用户发送即时消息,消息服务已停止(在他的设备上)。用户获得通知。 这是我的方法的实现:

        @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();
                }


            }
        });

}
@覆盖
public void onShouldSendPushData(MessageClient客户端、Message消息、列表pushPairs){
final WritableMessage WritableMessage=新的WritableMessage(message.getRecipientId().get(0),message.getTextBody());
ParseQuery userQuery=ParseUser.getQuery();
userQuery.whereEqualTo(“objectId”,writeablemessage.getRecipientId().get(0));
ParseQuery pushQuery=ParseInstallation.getQuery();
whereMatchesQuery(“idutene”,userQuery);
//向查询发送推送通知
ParsePush push=新的ParsePush();
setQuery(pushQuery);//设置我们的安装查询
setMessage(“向您发送消息”);
push.sendInBackground(新的SendCallback(){
@凌驾
公共作废完成(Parsee异常){
如果(e==null){
}否则{
e、 printStackTrace();
}
}
});
}
问题如下:

如果我在MessagingActivity中,我将编写一条消息,并在调用onShouldSendPushData之前退出活动(例如,编写一条快速消息,然后单击“上一步”按钮退出应用程序),推送通知将永远不会触发(显然,因为onShouldSendPushData未及时调用)。 是否有办法在关闭应用程序之前等待onShouldSendPushData被触发?在调用onShouldSendPushData之前,我是否可以检查侦听器或某些属性以防止关闭活动

谢谢,,
Andrea

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