Push-уведомление не достигает, когда приложение на переднем плане - PullRequest
0 голосов
/ 03 марта 2019

У меня проблемы с получением Push-уведомлений, когда приложение находится на переднем плане на устройстве Android.Как только я помещаю приложение в фоновом режиме, все идет хорошо.

Это код Java, который я использую для отправки уведомлений:

        HttpClient client = HttpClientBuilder.create().build();
    HttpPost httpPost = new HttpPost(URL_SERVER);
    List<NameValuePair> arguments = new ArrayList<>();   
    arguments.add(new BasicNameValuePair("token", TOKEN));        
    arguments.add(new BasicNameValuePair("device", codigoApp));      
    arguments.add(new BasicNameValuePair("type", "1"));        
    arguments.add(new BasicNameValuePair("body", ip));                    
    arguments.add(new BasicNameValuePair("auth", GOOGLE_AUTH));        
    try {
        httpPost.setEntity(new UrlEncodedFormEntity(arguments));
        HttpResponse response = client.execute(httpPost);   
        String result = EntityUtils.toString(response.getEntity());
        System.out.println(result);
    } catch (IOException ex) {
        Logger.getLogger(NotificaReview.class.getName()).log(Level.SEVERE, null, ex);
    }

И это код в приложении:

    public void start() {
    if(current != null){
        current.show();
        return;
    }
    if (Push.getPushKey() != null)
        devicePush = Push.getPushKey(); 
    else
        Display.getInstance().registerPush(); 
    Form inicioGUI = new InicioGUI(devicePush);
    inicioGUI.show();
}

public void stop() {
    current = getCurrentForm();
    if(current instanceof Dialog) {
        ((Dialog)current).dispose();
        current = getCurrentForm();
    }
}

public void destroy() {
}

@Override
public void push(String value) {
  ToastBar.showMessage("Archivo recibido correctamente con IP" + value, FontImage.MATERIAL_INFO);
}

@Override
public void registeredForPush(String deviceId) {
    devicePush = deviceId;
}

@Override
public void pushRegistrationError(String error, int errorCode) {

}

ToastBar отображается только тогда, когда я вывожу приложение на передний план после получения толчка в фоновом режиме.Push-обратный вызов никогда не вызывается, если приложение работает.

Есть идеи?

1 Ответ

0 голосов
/ 04 марта 2019

Мне нужны ответы на мой комментарий в вопросе, которые могут помочь объяснить проблему.Я отредактирую этот ответ на основе обновлений вопроса.

Тем временем я вижу несколько проблем в коде.Смотрите мои выделенные комментарии / исправления ниже:

public void start() {
    if(current != null){
        current.show();
        return;
    }
    // don't check the push key, always register the device and 
    // always do it in a callSerially as it might trigger a prompt
    callSerially(() -> registerPush()); 
    Form inicioGUI = new InicioGUI(Push.getPushKey());
    inicioGUI.show();
}

@Override
public void push(String value) {
  ToastBar.showMessage("Archivo recibido correctamente con IP" + value, FontImage.MATERIAL_INFO);
}

@Override
public void registeredForPush(String deviceId) {
    // deviceId is the native push key you need to use the actual 
    // push key value never device ID
    devicePush = Push.getPushKey();
}

@Override
public void pushRegistrationError(String error, int errorCode) {
    // you might have gotten a push error which might have explained the
    // cause of the problem
    Log.p("Push error " + errorCode + ":" + error);
    Log.sendLogAsync();
}
...