【问题标题】:Safari meta refresh not working with my iphone appSafari 元刷新不适用于我的 iPhone 应用
【发布时间】:2014-04-19 01:16:56
【问题描述】:

我有一个允许用户安装配置文件的应用。我通过在视图控制器上显示一个按钮来执行此操作,单击该按钮时会显示一个非常基本的 HTML 页面(使用Cocoa HTTP Server),该页面有一个 iframe,它将打开 .mobileconfig 文件并允许用户安装它。在用户安装配置文件(或者实际上是取消安装)后,iOS 会自动将用户切换回 safari 应用程序。我已经设置了自定义 URL 方案并且效果很好。

我想做的是在用户安装配置文件后自动将用户重定向回应用程序。我认为解决此问题的最佳方法是http-equiv="refresh" 元标记,但似乎只有在用户在刷新时间内完成设置时才会重定向用户(如果这有意义的话)。

例如,如果我能够安装配置文件并在 3 秒内切换回 safari - 它可以工作。如果我需要 5 秒或更长时间来安装配置文件,我将不会被重定向。似乎元刷新计时器正在后台运行,如果 Safari 不在前台 - 它不会这样做。

我的问题是,一旦安装了配置文件,无论用户需要多长时间,我如何自动将用户重定向回我的应用程序?我看过使用 javascript,但你可以在 iPhone 中关闭它,我宁愿不使用它。

Index.html

<html>
<head>
    <meta http-equiv="refresh" content="4;url=myapp://">
    <meta http-equiv="content-type" content="application/x-apple-aspen-config; charset=UTF-8">
    <title>Profile Installer</title>
    <style>
        #main{
            font-family: "Helvetica";
            padding-top: 500px;
            padding-left: 80px;
            padding-right: 50px;
        }
        p{
            font-size: 27pt;
            color: #FFFFFF;
        }
    </style>
</head>
<body bgcolor="#74caf2">
    <div id="main">
        <p>Downloading configuration profile. Please wait.</p>
    </div>
    <iframe width="1" height="1" frameborder="0" src="settings.mobileconfig"></iframe>
</body>
</html>

【问题讨论】:

  • 您是否设法解决了这个问题,我也在检查返回应用程序的选项。并且重新加载/刷新似乎是唯一可能的。
  • 我发现最好的办法就是自动刷新。这很烦人,但遗憾的是,这是我们目前能做的最好的事情。
  • 你能更新代码吗,我也在用 php 和 JS 开发一些解决方案,当我开始工作时也会粘贴。你有没有检查过 Onavo Extend,它们在没有 Cocoa HTTP 服务器的情况下打开并在页面上做一些刷新,很有趣。
  • 没有要更新的代码。这就是完成的文章。
  • 使用一个小的 JS 脚本来刷新,代码工作得非常好,并且刷新不会失效,因为它发生在 HTML 中的 contet-refresh 中。你想要脚本吗?

标签: ios iphone


【解决方案1】:

这个简单的 JS 非常适合添加到您的代码中,它消除了您在 html 中使用 content-refresh 选项提到的问题。我知道有些用户确实关闭了 mobileSafari 中的 JS,但根据我的经验和我们从我开发的应用程序收集的一些统计数据,占所有用户的 0.001%。

<script type="text/javascript">   
    function Redirect() 
        {  
            window.location="urlScheme://"; 
        } 
        setTimeout('Redirect()', 2000);   
</script>

【讨论】:

  • +1 最佳答案。是的,有些用户关闭了 JS……但也有一些用户关闭了手机……没有办法帮助那些人 :) 恕我直言 JS 是网络的一部分……关闭它意味着故意瘫痪您的浏览器体验。没有真正的人这样做......如果他们这样做了,他们会注意到大多数网络在之后变得无法使用。任何事情都必须运行 JS,这只是生活中的一个事实。
  • 完全忘记了这个答案 - 对不起 EmilDo!这行得通。
猜你喜欢
  • 1970-01-01
  • 2013-11-07
  • 2015-09-02
  • 1970-01-01
  • 1970-01-01
  • 2012-08-24
  • 1970-01-01
  • 2011-03-15
  • 2017-05-10
相关资源
最近更新 更多