Фоновый сервис для уведомлений - PullRequest
0 голосов
/ 20 мая 2018

Я работаю в поставщике уведомлений для моего приложения Android с WebView, который использует JavaScriptInterface для получения информации из удаленного файла Javascript, который, в соответствии с полученной информацией с сервера, запускает мое приложение для отправки уведомления в виде головы.

Итак, я добавил интерфейс JavaScript в onCreate void:

OnomeWebContainer.addJavascriptInterface(new WebAppInterface(this), "Android");

и создал класс WebAppInterface

// Interfacing with Javascript Code
public class WebAppInterface {
    Context mContext;

    WebAppInterface(Context c) {
        mContext = c;
    }

    @JavascriptInterface
    public void showTempHumUnavailableNotification(String toast) {
        OnomeTempHumUnavailableNotification();
    }

    @JavascriptInterface
    public void showSecurDudeAlertNotification(String toast) {
        OnomeSecurDudeAlertNotification();
    }
}

Файл JavaScript вызывает уведомление, когдаопределенный файл недоступен на удаленном сервере.

function showDHT11Alert() {
$.ajax({
    url: 'http://serveraddress/OnomeWeb/resources/data/tmp/onomeDHT11On',
    success: function () {
        $('#onomenotif_DHT11Unavailable').hide();
    },
    error: function () {
        $('#onomenotif_DHT11Unavailable').show();
        showDHT11Toast();
    },
});
}

function showDHT11Toast(toast) {
        Android.showTempHumUnavailableNotification(toast);
}

Поставщик уведомлений работает безупречно, даже если приложение работает в фоновом режиме, но, очевидно, если я закрываю приложение с экрана недавних приложений, поставщик уведомленийперестает работатьТеперь я хотел бы, чтобы этот интерфейс JavaScript работал в фоновом режиме, даже если приложение закрыто из последних приложений.

Фоновый сервис должен быть лучшим решением моей проблемы, но как я могу взаимодействовать?это с основным WebView?Это возможно?

1 Ответ

0 голосов
/ 20 мая 2018

Фоновая служба должна быть лучшим решением моей проблемы, но как я могу связать это с основным WebView?Возможно ли это?

К сожалению, это невозможно.JavaScriptInterface внедряется вашим приложением, вызывая

OnomeWebContainer.addJavascriptInterface(new WebAppInterface(this), "Android");

И он доступен только для вашего WebView.Другие WebViews не будут внедрять его и в результате не смогут вызвать ваш showTempHumUnavailableNotification

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...