|
134 | 134 | and---together with Web App Manifests---allow users to \emph{install \textsc{pwa}s} |
135 | 135 | to their devices' home screens. |
136 | 136 | Service Workers being a Web standard, support has landed in several |
137 | | -stand-alone Web browsers---among them (but not limited to) |
| 137 | +stand-alone Android Web browsers---among them (but not limited to) |
138 | 138 | Chrome and its open-source foundation Chromium, Firefox, Edge, Opera, |
139 | | -\textsc{uc}~Browser, Samsung Internet, as well as preview versions of Safari. |
| 139 | +\textsc{uc}~Browser, Samsung Internet, and---eagerly awaited---i\textsc{os} Safari. |
140 | 140 | In this paper, we examine the \textsc{pwa} feature support situation in \emph{Web Views}, |
141 | 141 | that is,\ \emph{in-app Web experiences} that are explicitly \emph{not} stand-alone browsers. |
142 | 142 | Such in-app browsers can commonly be encountered in chat applications like WeChat or WhatsApp, |
@@ -204,8 +204,9 @@ \subsection{History of Progressive Web Apps} |
204 | 204 | and---together with Web App Manifests~\cite{caceres2017manifest}---allowed |
205 | 205 | users to actually \emph{install \textsc{pwa}s} to their devices' home screens |
206 | 206 | with proper operating system integration~\cite{kinlan2017a2hs}. |
207 | | -Other browsers like Mozilla Firefox, Microsoft Edge, Opera, \textsc{uc}~Browser, Samsung Internet, |
208 | | -Apple Safari Technology Preview, and several browsers more followed in implementing Service Workers. |
| 207 | +Other Android browsers like Mozilla Firefox, Microsoft Edge, Opera, \textsc{uc}~Browser, Samsung Internet, |
| 208 | +and---eagerly awaited---Apple Safari on i\textsc{os}, |
| 209 | +as well as several browsers more followed in implementing Service Workers. |
209 | 210 | Now, even multinational companies like Twitter |
210 | 211 | or trivago bet on \textsc{pwa}~\cite{gallagher2017twitterlite,twg2017trivago}, |
211 | 212 | as well as giant national players like Tencent News or Sina Weibo in China~\cite{zhu2017pwa}. |
@@ -280,17 +281,13 @@ \section{Background on Web Views} |
280 | 281 | each having their own benefits and drawbacks. |
281 | 282 | In the following, we describe the options on the two popular |
282 | 283 | mobile operating system Android and i\textsc{os}. |
283 | | -At time of writing (January 2018), Safari on i\textsc{os} |
284 | | -does not support Service Workers and thus \textsc{pwa}s yet, |
285 | | -albeit work on implementing them has started, and |
286 | | -first versions of Safari Technology Preview on Apple's |
287 | | -desktop operating system mac{os} have enabled |
288 | | -Service Workers by default~\cite{davis2017safari}. |
289 | | -In the spirit of Progressive Enhancement~\cite{champeon2003progressiveenhancement}, |
290 | | -where new features will just be used when they are available, |
291 | | -and in the hope of Service Workers landing on the i\textsc{os} platform |
292 | | -in the not too distant future, |
293 | | -we nevertheless describe the Web View situation on i\textsc{os} as well. |
| 284 | +While Android had enjoyed Service Worker support for as long as 2014~\cite{cooney2014chromium}, |
| 285 | +at time of writing (February 2018), Safari on i\textsc{os} |
| 286 | +for the first time supported Service Workers |
| 287 | +in Beta versions of i\textsc{os}~11.3~\cite{mondello2018safari}. |
| 288 | +The implementation is still incomplete and several bugs exist, but in the spirit of |
| 289 | +Progressive Enhancement~\cite{champeon2003progressiveenhancement} |
| 290 | +the situation is expected to improve over time. |
294 | 291 |
|
295 | 292 | \subsection{Web Views on Android} |
296 | 293 |
|
@@ -414,9 +411,6 @@ \subsection{Parallelisms on the Two Operating Systems} |
414 | 411 | share cookies, permissions, \emph{etc.} |
415 | 412 | with the particular system's main browser. |
416 | 413 | Solely Android's Trusted Web Activity so far has no i\textsc{os} equivalent yet. |
417 | | -If (or rather as soon as) Apple catches up with implementing Service Workers, |
418 | | -our findings will be applicable on i\textsc{os} as well, |
419 | | -according to the parallelisms described in this section. |
420 | 414 |
|
421 | 415 | \section{Detecting \textsc{pwa} Features} |
422 | 416 | \label{sec:pwa-feature-detector} |
@@ -589,7 +583,8 @@ \subsection{Feature-Detecting Various \textsc{pwa} Features} |
589 | 583 | 'Offline Capabilities': 'caches' in win, |
590 | 584 | 'Push Notifications': 'pushManager' in reg, |
591 | 585 | 'Add to Home Screen': doc.createElement('link') |
592 | | - .relList.supports('manifest'), |
| 586 | + .relList.supports('manifest') && |
| 587 | + 'onbeforeinstallprompt' in win, |
593 | 588 | 'Background Sync': 'sync' in reg, |
594 | 589 | 'Navigation Preload': 'navigationPreload' in reg, |
595 | 590 | 'Silent Push': 'budget' in nav && |
@@ -634,28 +629,52 @@ \subsection{Implementation Details} |
634 | 629 | which, rather than using a~\texttt{WebView}, |
635 | 630 | displays Web content in a~\texttt{CustomTabsIntent}. |
636 | 631 | Despite the exact same underlying browser engine (Chrome/65.0.3310.3), |
637 | | -the more powerful \texttt{CustomTabsIntent}-based in-app browser |
| 632 | +the \texttt{CustomTabsIntent}-based in-app browser |
638 | 633 | clearly wins the \textsc{pwa} feature competition. |
639 | | -For non-domain experts we note that the \texttt{WebView} |
| 634 | +For non-domain experts we note that on Android the \texttt{WebView} |
640 | 635 | can be easily spotted by looking for the string |
641 | 636 | ``wv'' in the displayed user agent~\cite{chrome2018useragent}. |
| 637 | +The corresponding i\textsc{os} screenshots, likewise |
| 638 | +based on the same underlying browser engine (Safari~11.1), |
| 639 | +can be seen in \autoref{fig:facebook-ios-safari11_1} with a~\texttt{WKWebView} displayed in Facebook |
| 640 | +and in \autoref{fig:twitter-ios-safari11_1} with an \texttt{SFSafariViewController} |
| 641 | +displayed in Twitter. |
642 | 642 |
|
643 | 643 | \begin{figure}[t] |
644 | 644 | \centering |
645 | | - \includegraphics[width=.5\columnwidth,frame]{pwa-feature-detector-wechat-android-chrome65} |
646 | | - \caption[\textsc{pwa} Feature Detector running in WeChat.]{ |
647 | | - \textsc{pwa} Feature Detector running on Android~8.1.99 in the app WeChat |
648 | | - in a~\texttt{WebView} based on Chrome~65.} |
649 | | - \label{fig:wechat-android-chrome65} |
| 645 | + \begin{subfigure}[t]{0.475\columnwidth} |
| 646 | + \includegraphics[width=1\columnwidth,frame]{pwa-feature-detector-wechat-android-chrome65} |
| 647 | + \caption[\textsc{pwa} Feature Detector running in WeChat.]{ |
| 648 | + In WeChat in a~Chrome~65 based \texttt{WebView}.} |
| 649 | + \label{fig:wechat-android-chrome65} |
| 650 | + \end{subfigure} |
| 651 | + \quad |
| 652 | + \begin{subfigure}[t]{0.475\columnwidth} |
| 653 | + \includegraphics[width=1\columnwidth,frame]{pwa-feature-detector-twitter-android-chrome65} |
| 654 | + \caption[\textsc{pwa} Feature Detector running in Twitter.]{ |
| 655 | + In Twitter in a~Chrome~65 based \texttt{CustomTabsIntent}.} |
| 656 | + \label{fig:twitter-android-chrome65} |
| 657 | + \end{subfigure} |
| 658 | + \caption{\textsc{pwa} Feature Detector running on Android~8.1.99.} |
650 | 659 | \end{figure} |
651 | 660 |
|
| 661 | +
|
652 | 662 | \begin{figure}[t] |
653 | 663 | \centering |
654 | | - \includegraphics[width=.5\columnwidth,frame]{pwa-feature-detector-twitter-android-chrome65} |
655 | | - \caption[\textsc{pwa} Feature Detector running in Twitter.]{ |
656 | | - \textsc{pwa} Feature Detector running on Android~8.1.99 in the app Twitter |
657 | | - in a~\texttt{CustomTabsIntent} based on Chrome~65.} |
658 | | - \label{fig:twitter-android-chrome65} |
| 664 | + \begin{subfigure}[t]{0.475\columnwidth} |
| 665 | + \includegraphics[width=1\columnwidth,frame]{pwa-feature-detector-facebook-ios-safari11_1} |
| 666 | + \caption[\textsc{pwa} Feature Detector running in Facebook.]{ |
| 667 | + In Facebook in a~Safari~11.1 based \texttt{WKWebView}.} |
| 668 | + \label{fig:facebook-ios-safari11_1} |
| 669 | + \end{subfigure} |
| 670 | + \quad |
| 671 | + \begin{subfigure}[t]{0.475\columnwidth} |
| 672 | + \includegraphics[width=1\columnwidth,frame]{pwa-feature-detector-twitter-ios-safari11_1} |
| 673 | + \caption[\textsc{pwa} Feature Detector running in Twitter.]{ |
| 674 | + In Twitter in a~Safari~11.1 based \texttt{SFSafariViewController}.} |
| 675 | + \label{fig:twitter-ios-safari11_1} |
| 676 | + \end{subfigure} |
| 677 | + \caption{\textsc{pwa} Feature Detector running on i\textsc{os}~11.3 Beta~1.} |
659 | 678 | \end{figure} |
660 | 679 |
|
661 | 680 | \section{Results and Discussion} |
@@ -710,6 +729,17 @@ \section{Results and Discussion} |
710 | 729 | \end{center} |
711 | 730 | \end{figure} |
712 | 731 |
|
| 732 | +\begin{figure}[t] |
| 733 | + \renewcommand{\figurename}{Table} |
| 734 | + \begin{center} |
| 735 | + \centerline{\includegraphics[width=.65\columnwidth,trim=4.3cm 16.4cm 4.3cm 1.5cm, clip]{ios-results.pdf}} |
| 736 | + % https://docs.google.com/spreadsheets/d/18xaJeIrfaA-8wNucK7IDQMfr5LHjsBcey4lHF3Pkd1o/edit?usp=sharing |
| 737 | + \caption{\textsc{pwa} feature support situation on i\textsc{os} for both \texttt{WKWebView} (Facebook) |
| 738 | + and \texttt{CustomTabsIntent} (Twitter).} |
| 739 | + \label{table:safari} |
| 740 | + \end{center} |
| 741 | +\end{figure} |
| 742 | +
|
713 | 743 | \subsection{Discussion of the \texttt{WebView} Results} |
714 | 744 |
|
715 | 745 | Table~\ref{table:webview} unsurprisingly shows that the more mature |
@@ -856,10 +886,11 @@ \section*{Acknowledgements} |
856 | 886 |
|
857 | 887 | \begin{figure*}[b] |
858 | 888 | \begin{center} |
859 | | - \centerline{\includegraphics[trim=.5cm 13.75cm .5cm .5cm, clip]{index-sheet.pdf}} |
860 | | - \caption{Index sheet with all tested device screenshots showing both \texttt{WebView}s |
861 | | - and \texttt{CustomTabsIntent}s running in different applications. |
862 | | - High-resolution screenshots available at \url{https://photos.app.goo.gl/FdRsGOgtgNfvRIKB2}.} |
| 889 | + \centerline{\includegraphics[width=\paperwidth, trim=0cm 2.5cm 0cm 0cm, clip]{index-sheet.pdf}} |
| 890 | + \caption{Index sheet with all tested device screenshots showing Android \texttt{WebView}s and |
| 891 | + \texttt{CustomTabsIntent}s, as well as i\textsc{os} \texttt{WKWebView} and \texttt{SFSafariViewController}, |
| 892 | + running in different applications. |
| 893 | + Higher resolution screenshots are available at \url{https://photos.app.goo.gl/Kh3DyhpL6Q58G7tn1}.} |
863 | 894 | \label{fig:indexsheet} |
864 | 895 | \end{center} |
865 | 896 | \end{figure*} |
|
0 commit comments