【问题标题】:Launch mobile Safari from UIWebView *without* modifying app source?从 UIWebView 启动移动 Safari *无需*修改应用程序源?
【发布时间】:2023-03-22 07:45:01
【问题描述】:

我正在开发一个只能在 UIWebView 内的应用内查看的小型网站,并且一个页面有多个指向外部网站的链接。我希望这些在移动 Safari 中打开,但应用程序内的所有链接都加载到 webview 中。修改应用程序的源代码不是一种选择,因为网站需要在提交任何更改之前处于活动状态。

有没有办法强制 UIWebView 中的链接使用 HTML/5 或 Javascript 启动移动 Safari?模仿shouldStartLoadWithRequest?鬼鬼祟祟的变通办法还是出色的替代解决方案?

(而且,纯粹出于好奇……为什么不呢?)

【问题讨论】:

    标签: javascript iphone html uiwebview mobile-safari


    【解决方案1】:

    让网站通过简单的 HTML 访问 iPhone 上的框架是一个糟糕的设计。这将打开各种安全漏洞。它不是您要更改的网络行为,因此我认为您可能需要更改应用程序源。我仍然不明白为什么这不是一个选择。能不能再深入一点?

    【讨论】:

    • 这是有道理的——我从未充分考虑过安全风险。由于时间限制,无法更改应用程序源; webview 包含一个用于假日促销的 iAd 式网站,并且需要在我们推出新版本之前上线。 (也无法控制最终服务器。)启动移动 Safari 是理想的解决方案,因为外部站点的可用性很差 + 无法返回促销站点。很可能会尝试在顶部使用自定义导航的 iframe,因为那样会让人畏缩。
    【解决方案2】:

    一种选择是添加自定义 URL 处理程序。然后,您的网站可以确定“浏览器”是否是应用程序,并为您希望在应用程序中维护(也称为打开)的那些链接提供自定义 URL。然后,任何标准 HTTP/s URL 都会在 Mobile Safari 中打开。

    换句话说,让您的网络服务器为您希望应用处理的链接提供诸如 myappurl:// 之类的 URL,并为打开 Mobile Safari 提供 http://。

    【讨论】:

      猜你喜欢
      • 2018-05-31
      • 1970-01-01
      • 2023-03-21
      • 2011-07-22
      • 1970-01-01
      • 2016-02-20
      • 2011-10-21
      • 2010-10-23
      • 1970-01-01
      相关资源
      最近更新 更多