不经过App Store实现ios应用分发下载安装

最近公司的项目准备着手宣传工做了,宣传手册上要印制App的下载地址二维码,可是客户端应用还未上线,须要一种临时的方案解决应用分发下载问题,一般ios应用必须经过苹果应用商店才能下载安装,可是也能够看到一些应用没有经过苹果应用商店也能下载安装,好比下面的兔兔助手。
兔兔助手_苹果手机助手_兔兔助手越狱版_兔兔助手官网下载
 
 
直接扫码或者点击手机页面的下载连接就能下载安装成功。
 
其实这种安装方式是利用企业证书签名app的部署方式来安装程序,直接在ios设备上安装,严格来讲实际上是不符合apple的相关规定的,所以通常只用于内部测试下载安装,不建议使用这种方式来进行最终的应用分发。下面具体介绍一下实现方式。
准备的文件主要是三个:
  • 一、应用程序 后缀(.ipa) 文件(使用了企业级预置描述文件);
  • 二、清单 (后缀.plist) 文件(xml格式的清单描述文件)。
  • 三、网页(后缀.html)文件(引导用户安装的界面)
我没作过ios开发,所以.ipa文件,.plist文件怎么获得,开发人员应该很清楚,这里只介绍一下文件部署的状况。
首先APP上传到服务器有一个下载地址,好比: http://youdomain/app.ipa
而后部署.plist文件,这个文件大体以下所示
  1.  
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
        <key>items</key>
        <array>
            <dict>
                <key>assets</key>
                <array>
                    <dict>
                        <key>kind</key>
                        <string>software-package</string>
                        <key>url</key>
                        <string>http://cloud.189.cn/download/client/iOS/cloud189_1.1.1.ipa</string>
                    </dict>
                </array>
                <key>metadata</key>
                <dict>
                    <key>bundle-identifier</key>
                    <string>请填上你的开发者证书用户名</string>
                    <key>bundle-version</key>
                    <string>版本</string>
                    <key>kind</key>
                    <string>software</string>
                    <key>title</key>
                    <string>请填上标题</string>
                </dict>
            </dict>
        </array>
    </dict>
    </plist>
     

     

须要注意的是从ios7.1开始, http推送plist已经不能用了,只能使用https推送,所以访问这个文件的地址必须是https开头的。你能够配置本身的服务器支持https服务,也能够借助第三方工具,这里主要介绍使用第三方工具。
国外有不少网站都是支持https服务的,好比DropBox和Github,以Github为例,打开任意开源项目中的一个文件,切换到“RAW”
 
 
 
 
 
能够看到地址栏显示的是https,所以能够把app.plist文件上传到github生成一个https地址,不幸的是github在国内基本上属于被墙的状态,所以须要在国内找一个能提供https服务的存储方式,这里我推荐 七牛云存储,注册成为标准用户后,新建一个空间,上传文件
 
 
在空间设置里能够开通https服务
 
 
这样就能获得一个 https://dn-yourdomain.qbox.me/app.plist的地址,说了这么多,终于将.plist文件部署好了,其实前面的.ipa文件也能够上传到七牛云存储上供下载分流。
最后介绍如何下载安装应用,使用的是itms-services:协议
  1. itms-services://?action=download-manifest&url=https://plist文件的地址

     

接下来只要在网页(html)文件中加入
  1. <a href="itms-services://?action=download-manifest&url=https://plist文件的地址">安装</a>

     

这样点击手机网页上的“安装”连接就能下载安装应用了。至于这个页面要作的多花里胡哨,那就是前端美工的事了。
这里有一段比较完整的示例
  1.  
     1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     2 <htmlxmlns="http://www.w3.org/1999/xhtml">
     3 <head>
     4 <metahttp-equiv="Content-Type"content="text/html; charset=utf-8"/>
     5 <title>应用名字</title>
     6 </head>
     7 <body>
     8    <h1style="font-size:80pt">若是点击没法下载安装,请复制超连接到浏览器中打开<h1/>
     9    <h1style="font-size:100pt">
    10    <a title="iPhone"href="itms-services://?action=download-manifest&url=https://dn-你的空间名字.qbox.me//你的.plist">点击下载        </a><h1/>
    11 </body>
    12 </html>
    13  
     

     

若是想手机进入页面后直接下载安装,能够在html 标签的 head 标记中加入以下的Javascript代码

 

<script>
        var url ="https://plist文件地址";
        window.location ="itms-services://?action=download-manifest&url="+ url;
</script>

 

这样就会自动提示下载和安装了。

 

 
若是经过ios应用内安装,代码大概以下所示
iOS:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itms-services://?action=download-manifest&url=https://plist文件的地址"]];

最后才是重点,咱们没必要这么麻烦本身部署这么多文件,彻底能够借助第三方应用内测分发平台,比较出名的有下面几个:html

应用测试发布平台前端

 

fir.im - 免费应用内测托管平台|iOS应用Beta测试分发|Android应用内测分发ios

http://fir.im/git

 

蒲公英 - 免费的应用托管平台|App应用众测分发github

http://www.pgyer.com/api

 

Pre.im - APP内测托管平台首选 - Beta测试 - 免费的应用内测托管平台浏览器

http://pre.testin.cn/七牛云存储

 

TestFlight Beta Testing - App Store - Apple Developer服务器

https://developer.apple.com/testflight/app

试用了一下蒲公英,真是至关方便,只要注册一个账号,将ipa文件上传,就会当即生成一个下载地址以及引导下载页面

 

 

经过查看api能够看到,蒲公英也是经过上面的方式安装的,只是给开发者省了很多时间

 

若是你嫌蒲公英的下载引导页面很差看,你能够本身作一个html页面,直接是用上面的itms-services地址。

 
参考:
相关文章
相关标签/搜索