我们有一个使用html缓存清单的https webapp,因此它可以脱机运行。
我们指示用户将其添加到主屏幕以获得最佳体验(手机上没有地址栏等)。我们遇到一个问题,如果您从主屏幕删除应用程序,关闭Safari,然后重新打开并重新添加到主屏幕,该应用程序将不会使用应用程序图标,无法完成https请求,并且缺少一些缓存数据。
应用程序将继续在safari中始终运行良好,所有资源都被缓存和加载,并且所有https请求都可以正常工作。
以下是重现此步骤的步骤,我们在iOS 7 iPhone,iOS 8 iPhone和iOS 7 iPad2上完成了这一步骤。这可能适用于其他webapps发出https请求和使用缓存清单,但我不确定。这将通过真实证书和自签名证书进行复制。
打破网络应用的步骤
修改网络应用的步骤
https://OurWebappURL
以下是html <head>
标记的一大块,它告诉它作为webapp运行并使用应用程序图标(它是跨平台的)。
<html lang="en" manifest="cache.manifest">
<head>
<title>Our App Title</title>
<!-- Enable the homescreen app on mobile devices -->
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
<!-- Enable the App Icon -->
<link rel="icon" type="image/png" sizes="196x196" href="images/AppIcon.png">
<link rel="apple-touch-icon" href="images/AppIcon.png">
<link rel="apple-touch-startup-image" href="https://ourURL/images/iPhoneStartup.png">
<meta name="viewport" content="width=device-width" />
<meta name="viewport" content="initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no, height=device-height, width=device-width" />
<meta http-equiv="content-language" content="en">
如果我们移除<meta name="apple-mobile-web-app-capable" content="yes" />
,导致它打开safari并在那里加载应用程序,它运行正常,因为它只是在safari中运行。但是,这不是我们想要的体验,因此它是一种解决方法,而不是解决方案。这也没有解决第二次添加到主屏幕的问题,徽标仍未使用。
我们未注册为Apple开发人员,因此无法记录错误报告。请提出任何想法或反馈意见,这是非常艰难的!
编辑:我现在使用相同应用程序的http(无SSL)版本对此进行了测试,它运行正常,这似乎是一个https问题。
答案 0 :(得分:0)
我们确定原因是拥有证书链不完整的通配符证书,或者使用自签名证书。
完全签名的单域证书在大多数情况下都能正常运行,我们会向客户推荐,但您似乎可以通过联系您的证书提供商并请求安装中间证书来修复证书链。
在这种情况下,我们没有这样做,据我所知,我们选择了一个较短链的单域证书。