Safari 元刷新不适用于我的 iPhone 应用程序

Sco*_*ady 2 iphone ios

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

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

例如,如果我能够安装配置文件并在 3 秒内切换回 Safari,那么它就可以工作。如果我花费 5 秒或更长时间来安装配置文件,我将不会被重定向。元刷新计时器似乎在后台运行,如果 Safari 不在前台,它就不会执行此操作。

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

索引.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>
Run Code Online (Sandbox Code Playgroud)

Emi*_*lDo 7

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

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