在任务切换器中关闭Safari会破坏添加到主屏幕

时间:2014-09-25 20:43:14

标签: ios html5 web-applications safari cache-manifest

我们有一个使用html缓存清单的https webapp,因此它可以脱机运行。

我们指示用户将其添加到主屏幕以获得最佳体验(手机上没有地址栏等)。我们遇到一个问题,如果您从主屏幕删除应用程序,关闭Safari,然后重新打开并重新添加到主屏幕,该应用程序将不会使用应用程序图标,无法完成https请求,并且缺少一些缓存数据。

应用程序将继续在safari中始终运行良好,所有资源都被缓存和加载,并且所有https请求都可以正常工作。

以下是重现此步骤的步骤,我们在iOS 7 iPhone,iOS 8 iPhone和iOS 7 iPad2上完成了这一步骤。这可能适用于其他webapps发出https请求和使用缓存清单,但我不确定。这将通过真实证书和自签名证书进行复制。

打破网络应用的步骤

  1. 转到主屏幕
  2. 点按并按住Webapp App图标
  3. 点按显示的小x,从主屏幕删除该应用
  4. 点按主页按钮以关闭编辑模式
  5. 双击主页按钮
  6. 向上滑动所有打开的应用程序(Safari和Webapp,如果打开)
  7. 重新打开Safari(应重新加载webapp)
  8. 点按分享按钮,然后添加到主屏幕。 (不应该显示徽标)
  9. 从主屏幕打开应用并尝试部署
  10. 修改网络应用的步骤

    1. 如果主屏幕上存在Webapp,请执行以下操作:
    2. 点按并按住webapp图标
    3. 点按似乎将其删除的x
    4. 点按主屏幕按钮以关闭编辑模式
    5. 打开设置 - > Safari
    6. 点按清除历史记录
    7. 点按清除Cookie和数据
    8. 打开Safari,输入https://OurWebappURL
    9. 点按分享按钮,将应用添加到主屏幕(应显示徽标和“AppTitle”)
    10. 从主屏幕打开应用并部署
    11. 以下是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问题。

1 个答案:

答案 0 :(得分:0)

我们确定原因是拥有证书链不完整的通配符证书,或者使用自签名证书。

完全签名的单域证书在大多数情况下都能正常运行,我们会向客户推荐,但您似乎可以通过联系您的证书提供商并请求安装中间证书来修复证书链。

在这种情况下,我们没有这样做,据我所知,我们选择了一个较短链的单域证书。