Я разработал приложение для обмена мгновенными сообщениями, следуя этим руководствам:
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 (например, напишу быстрое сообщение, а затем я нажму кнопку «Назад», чтобы выйти из приложения) push-уведомление никогда не запускается (очевидно, потому что onShouldSendPushData не вызывается вовремя). Есть ли способ дождаться запуска onShouldSendPushData перед закрытием приложения? Есть ли прослушиватель или какое-то свойство, которое я могу проверить, чтобы предотвратить закрытие активности до вызова onShouldSendPushData?
Спасибо, Андреа.