繁体   English   中英

iOS PWA-“打开地图”返回黑屏

[英]iOS PWA - Open Maps returns to blank screen

我创建了一个PWA,并将其保存到iPhone的主屏幕。 PWA有一个Google Maps链接,可以在全屏和浏览器模式下正确打开,但是在iOS上从全屏模式打开时,该链接会打开,然后切换到Google Maps App(如果已安装)。

当我关闭地图应用并返回到PWA时,它将显示一个空白屏幕,并且不会返回到包含该链接的上一个视图。

function openMap(lat, lng) {
    var win = window.open("https://maps.google.com/?q=" + lat + "," + lng + "", '_blank');
    win.focus();
}

有没有一种方法可以防止PWA在弹出的Safari浏览器中打开地图链接,而只是在完整的Safari应用程序中启动该链接,或者采取其他任何方法来解决/预防此问题?

谢谢

以下这段代码解决了在浏览器中在新标签页中打开地图但在iOS上作为PWA运行时不打开地图的问题。

function openMap(lat, lng) {
        if (('standalone' in window.navigator) && window.navigator.standalone) {
            var win = window.open("https://maps.google.com/?q=" + lat + "," + lng + "", '_top');
            win.focus();
        } else {
            var win = window.open("https://maps.google.com/?q=" + lat + "," + lng + "", '_blank');
            win.focus();
        }
    }

我可以确认Tom Coomer的代码可在iOS 12.3.1上运行的PWA中正常工作-即,用户的本机地图应用将正确打开。 关闭本地地图应用程序并返回到PWA后,将显示正确的视图而不是白屏。

我想将地图调用保持在用户本地地图应用的本地,因此我添加了平台检查:

const mapsSelector = (lat, lng) => {
  if (['iPhone', 'iPad', 'iPod'].includes(navigator.platform)) {
    const win = window.open(`maps://maps.google.com/maps?daddr=${lat},${lng}&ll=`, '_top');
    return win.focus();
  }
  /* default to Google */
  const win = window.open(`https://maps.google.com/maps?daddr=${lat},${lng}&ll=`, '_top');
  return win.focus();
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM