Обходной путь для отсутствия "Web Pu sh" в Safari для моего PWA - PullRequest
1 голос
/ 24 марта 2020

Я разрабатываю PWA, требующий Pu sh -Обновления. К сожалению, IOS / Safari пока не поддерживает https://w3c.github.io/push-api/#pushmanager -интерфейс , поэтому я думаю, что мне, возможно, придется каким-то образом обернуть нативное приложение.

В Android (до их «Доверенные веб-действия» - это то, что вам нужно) вы можете использовать WebView для отображения безглавого Chrome -View в вашем приложении. Что такое эквивалент в IOS и как работает взаимодействие между уведомлениями pu sh и Webapp (браузер должен перейти на указанную c страницу)?

Еще одна вещь, которая мне нужна интеграция с нашей компанией Mobile Device Management, которая является Microsoft Intune. Интегрировав MDM в Android в прошлом, я знаю, что это может быть основной проблемой в **, поэтому я собираюсь создать обертку самостоятельно, для максимальной гибкости. Другим вариантом будет что-то вроде Ioni c, сейчас не уверен.

1 Ответ

0 голосов
/ 06 апреля 2020

Это может не обязательно работать в вашей ситуации, но у меня была точно такая же проблема с PWA для Safari, и я решил ее, просто используя длинный опрос. Это позволит вам обойти все ограничения с Safari, и я смог перенаправить и загрузить разделы в нашем SPA.

async function subscribe() {
  let response = await fetch("/subscribe");

  if (response.status == 502) {
    // Status 502 is a connection timeout error,
    // may happen when the connection was pending for too long,
    // and the remote server or a proxy closed it
    // let's reconnect
    await subscribe();
  } else if (response.status != 200) {
    // An error - let's show it
    showMessage(response.statusText);
    // Reconnect in one second
    await new Promise(resolve => setTimeout(resolve, 1000));
    await subscribe();
  } else {
    // Get and show the message
    let message = await response.text();
    showMessage(message);
    // Call subscribe() again to get the next message
    await subscribe();
  }
}

subscribe();

https://javascript.info/long-polling

...