Я пытался исправить это несколько недель и понятия не имел, что является причиной проблемы. В моем проекте я использую метод AssessmentJavascript() Android Webview следующим образом:
Хотя в 9 случаях из 10 эти вызовы возвращают значение в методе onReceiveValue(), время от времени я просто никогда не получаю ответа вообще .
Отсутствие реакции превратило последовательность событий в кошмар, и я понятия не имею, почему это происходит.
Еще немного данных, чтобы избежать дополнительных вопросов:
Минимальный SDK для этого проекта — 21, а я нацелен на 28.
Я не использую какие-либо javascriptInterface на данный момент и не собираюсь для этого проекта по нескольким причинам, связанным с бизнесом.
Когда я получаю ответ от веб-просмотра в методе onReceiveValue(), обычно это значение, которое я только что установил, или «нулевое», если это было событие щелчка. В любом случае, проблема не в том, что я иногда получаю нули или другие значения, а в явном отсутствии ответа иногда.
Как показано в примере кода, я определенно запускаю это в потоке пользовательского интерфейса согласно документации.
Я попросил разработчика сервера добавить некоторый код в журнал консоли всякий раз, когда я нажимаю кнопку, и когда я возвращаю успешное значение в методе onReceiveValue(), консоль регистрирует работают и отвечают, но когда я нахожусь в ситуации, когда не получаю ответа, журналы веб-консоли никогда не срабатывают и никогда не обнаруживают взаимодействие с кнопкой.
У меня тоже есть попробовал добавить таймер с логикой, которая прослушивает ответ от веб-просмотра и, если он его не получает, пытается повторить тот же вызов до 10 раз. Если первый вызов не удался, ни одна из последующих попыток не сработает.
Похоже, что проблема связана с Javascript Bridge, но я не уверен.
Сводный вопрос, который у меня есть: что может привести к тому, что вызов AssessmentJavascript() Android WebView не вызовет обратный вызов и не вернет значение в onReceiveValue()?
Я пытался исправить это несколько недель и понятия не имел, что является причиной проблемы. В моем проекте я использую метод AssessmentJavascript() Android Webview следующим образом:
[code] this.runOnUiThread(new Runnable() { @Override public void run() { webView.evaluateJavascript(command, new ValueCallback() { @Override public void onReceiveValue(String value) { //Parsing and taking action here Log.d("Response", value); } }); } }); [/code]
Пример строки JavaScript, который я отправляю, будет выглядеть так:
Хотя в 9 случаях из 10 эти вызовы возвращают значение в методе onReceiveValue(), время от времени я просто никогда не получаю ответа вообще .
Отсутствие реакции превратило последовательность событий в кошмар, и я понятия не имею, почему это происходит.
Еще немного данных, чтобы избежать дополнительных вопросов:
[list] [*]Минимальный SDK для этого проекта — 21, а я нацелен на 28. [*]Я [b]не[/b] использую какие-либо javascriptInterface на данный момент и не собираюсь для этого проекта по нескольким причинам, связанным с бизнесом. [*]Когда я получаю ответ от веб-просмотра в методе onReceiveValue(), обычно это значение, которое я только что установил, или «нулевое», если это было событие щелчка. В любом случае, проблема не в том, что я иногда получаю нули или другие значения, а в явном отсутствии ответа иногда. [*]Как показано в примере кода, я определенно запускаю это в потоке пользовательского интерфейса согласно документации. [*]Я попросил разработчика сервера добавить некоторый код в журнал консоли всякий раз, когда я нажимаю кнопку, и когда я возвращаю успешное значение в методе onReceiveValue(), консоль регистрирует работают и отвечают, но когда я нахожусь в ситуации, когда не получаю ответа, журналы веб-консоли никогда не срабатывают и никогда не обнаруживают взаимодействие с кнопкой. [*]У меня тоже есть попробовал добавить таймер с логикой, которая прослушивает ответ от веб-просмотра и, если он его не получает, пытается повторить тот же вызов до 10 раз. Если первый вызов не удался, ни одна из последующих попыток не сработает. [*]Это настройки моего веб-просмотра: [/list]
Похоже, что проблема связана с Javascript Bridge, но я не уверен.
Сводный вопрос, который у меня есть: [b]что может привести к тому, что вызов AssessmentJavascript() Android WebView не вызовет обратный вызов и не вернет значение в onReceiveValue()?[/b]
Я пытался исправить это несколько недель и понятия не имел, что является причиной проблемы. В моем проекте я использую метод AssessmentJavascript() Android Webview следующим образом:
this.runOnUiThread(new Runnable() {
@Override
public void run()...
WKWebView аварийно завершает работу при попытке оценить JavaScript в Xcode 14.1 с использованием Swift, протестировано на iOS, но такое же поведение должно быть и в macOS.
Я сделал значительно упрощенный пример, чтобы попытаться найти решение, и оно...
Я создаю приложение iOS V15.0 в Swift как обертка вокруг веб-приложения на основе React. Веб -приложение, вводит wkuserscript при загрузке:
for webViewEventName in WKWebView.WebViewEvent.allCases {
let eventName: String =...