作者:钞绚舞亨利 | 来源:互联网 | 2023-08-29 20:40
问题:
带有sms:和mailto:链接的网页在ios移动safari浏览器上失败。单击链接会将您重定向到:
Safari无法打开页面,因为它无法重定向到位置
以“ sms:”开头
或
Safari无法打开页面,因为它无法重定向到位置
以“ mailto:”开头
这些通常可以正常工作,直到大约两三个月前。现在这些在使用Safari浏览器的Apple移动设备上失败。
背景:
- 我为基于活动的团队创建响应式网页。我们要做的事情之一就是提供团队名单。名册包括电话号码,SMS文本页面和电子邮件的链接。
- 为使事情简单,我们使用简单的网页。
- 由于安全和隐私问题,仅在登录后通过node.js服务器通过ajax调用提供此内容。我们正在使用单个node.js Express服务器来托管网站内容并管理http / api调用。
- 通常,单击链接会将移动设备推送到相应的本机应用程序中,以进行电话,SMS短信或电子邮件。
- 这在所有设备上都运行了好几年。
- 最近我们在iPhone上看到了问题...但是...
- 这是最奇怪的部分。我有3个团队使用此技术。.仅在三个团队中有两个失败。短信链接在那很好。
- “ tel:”链接在所有设备上均可正常运行。
- 仅在iPhone上的sms和mailto:这三个站点中的两个站点上发生故障。在Android设备,Windows和MacOS上,一切仍然可以正常工作。问题是苹果移动设备。
- 发生故障的两个站点是Progressive Web Apps,带有manifest.json文件和service_worker.js。正常工作的网站都没有。当我删除清单并关闭服务人员时,没有任何改善。
- 这三个网站都是通过App引擎在Google Cloud托管的。失败的两个站点仅使用web_app.appspot.com寻址。运作良好的网站使用的是真实网址,指向应用程序引擎的位置。
典型代码:
Jane Doe
如果您在Apple移动设备的浏览器中将其打开,我想知道是否会显示问题:
显然这是失败的。您甚至都看不到我的移动设备上的“运行摘要”按钮。
测试,更多测试...
我刚发现...如果将网站保存到我的移动设备主页上,从而将图标添加到主屏幕并处于显示模式,则看不到顶部URL地址栏或Safari选项栏然后在底部的SMS:将失败。如果您只是在Safari中打开地址,但不保存文件,那么它将非常有用。
同样,当我进入Apple Web Application mode时,SMS链接失败。
一个黑客...通过iPhone上的Safari移动浏览器打开网站。将网站保存到主页。验证图标在手机上。转到设置-> Safari->高级->网站数据,然后通过向左滑动内容来删除站点。缓存存储干净,但图标仍保留在移动屏幕上。使用图标帮助登录,但不要再次保存该网站。请注意,URL行是可见的。短信将起作用。
此处仍在测试...
我试图建立一个简单的例子来说明这个问题。我完全无法使示例由于上面的错误消息而失败。供参考,测试站点为here.测试源代码为here.
我怀疑问题与以下事实有关:两个站点都位于一个子域站点。 (mywebapp.appspot.com)当清单包含所有“有效”内容时,该站点确实显示为ios Apple Web应用程序,而没有可见的URL行...但是,只要我处于该模式,SMS链接就会完全失败。 / p>
话虽如此,您可以通过
控制存储模式。
在测试期间,我还注意到,每当manifest.json文件包含//
注释标记时,Safari会忽略该文件的任何位置。通常,.json文件中不允许//
注释,但根据MSN source,,在manifest.json文件中可以使用注释。
选择是
当前,我正在运行
...我可以在主屏幕上获得自定义图标的优点,即使该Web应用仍明显位于移动浏览器中,并且顶部/底部信息行可见, 。