About

<#TEMPLATE_INCLUDE_NINEPAGE_ABOUTME#>
  • Aug

    2

    iOS App 开发:inHouse 发布方式(OTA)

    • 3 Comments
    • Miscellaneous
    • 发布:古树
    • 引用:0
    • 浏览:

    先说明:In-House 方式不仅适用于企业开发者证书在线发布 ipa 文件 ,同样也适用于个人开发者证书生成的 ipa 文件。但一般只用于企业开发者证书开发的 APP,因为企业开发者证书是不限机器数量的,在无需越狱的状态下可以任意安装的;而个人开发者证书虽然也能使用 inHouse 方式在线发布,但必须绑定安装设备的 UDID,并且最多设备数量为100台。因为一般应用或游戏开发完成后是直接发布到外网的,所以这种使用的方式人就比较少。

    以下以企业开发者证书与普通服务器网站为例:

    第一步:确定 *.ipa 存放的位置,可以通过 http 或 https 协议访问到(比如:http://xxxxxx/AppDesign/App.ipa)。

    注:如果用的是免费空间或虚拟主机,不能下载 *.ipa 文件,可以直接将 ipa 后缀名改为其它 IIS 安全可以访问的后缀名,比如 htm、rar 等也没有关系;同样第二步中的 plist 文件后缀名对应也要是修改后的后缀名。

    第二步:生成 *.plist 文件,存放于 https 协议可以访问到的地址( iOS 7 以上的版本必须要求 https,所以最好以最新版本的 iOS 系统为标准)。

    注:如果自己的服务器不支持 https 协议可以使用开源中国,放在国外的 github 也可以,但随时有可能像 DropBox 那样会被封,用户就会访问不到 plist 文件。

    一个简单的 plist 文件如下所示(如果企业版证书用了通配符 * 号可以任意填写 APP ID,那么 plist 文件中 bundle-identifier 的值也可以直接写通配符) :

    <?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://xxxxxx/AppDesign/App.ipa</string>
                        </dict>
                    </array>
                    <key>metadata</key>
                    <dict>
                        <key>bundle-identifier</key>
                        <string>*</string>
                        <key>bundle-version</key>
                        <string>1.0.0</string>
                        <key>kind</key>
                        <string>software</string>
                        <key>title</key>
                        <string>某个APP的名称用于在线安装时弹出对话框显示</string>
                    </dict>
                </dict>
            </array>
        </dict>
    </plist>

    第三步:如果需要二维码扫苗后在线安装,将包含 JS 解析终端用户设备的跳转代码 html 上传到网络(比如 JumpJS.html),然后将此文件的地址通过在线生成二维应用生成二维码图片上传至网络;如果不需要二维码扫苗安装可以跳过这一步。一个简单的 JS 跳转页面如下所示:

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">  
    <html>  
        <head>
        <meta charset="UTF-8">
        <title>手机APP下载页面:根据终端辨别下载地址</title>

            <script type="text/javascript">
                var theUrl = "itms-services://?action=download-manifest&url=";
                // 获取终端的相关信息
                var u = navigator.userAgent
                var app = navigator.appVersion;
                if(u.indexOf('Android') > -1){
                    //这里是安卓
                }
                if(u.indexOf('Linux') > -1){
                    //这里是Linux
                }
                if(u.indexOf('iPhone') > -1){
                    theUrl += 'https://xxxxxxx/ipa_install_online/App.plist';
                }
                if(u.indexOf('iPad') > -1){
                    theUrl += 'https://xxxxxxx/ipa_install_online/App.plist';
                }
                /*
                // 辨别移动终端的语言:zh-cn、en-us、ko-kr、ja-jp...
                var language = (navigator.browserLanguage || navigator.language).toLowerCase();

                switch(language){
                    case 'en-us':
                        theUrl = '你的iPad APP(英文版)对应下载地址:APP Store地址';
                        break;
                    case 'ko-kr':
                        theUrl = '你的iPad APP(韩语版)对应下载地址:APP Store地址';
                        break;
                    case 'ja-jp':
                        theUrl = '你的iPad APP(日文版)对应下载地址:APP Store地址';
                        break;
                    case 'zh-cn':
                        theUrl = '你的iPad APP(中文版)对应下载地址:APP Store地址';
                        break;
                    default:
                        theUrl = '你的iPad APP(默认)对应下载地址:APP Store地址';
               }
               */


                location.href = theUrl;
            </script>
        </head>
        <body>
            <!-- 无网页内容-->
        </body>
    </html>  

    第四步:制作和上传索引网页文件(比如 index.html,包含在线安装的按扭,以及第 3 步中生成的二维码图片之类的)。一个最简单的索引文件可能就如下所示:

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">  
    <html>  
        <head>  
          <meta http-equiv="Content-Type" content="text/html; charset=utf-8">  
          <meta http-equiv="Content-Style-Type" content="text/css">  
          <title>在线安装</title>  
        </head>  
        <body>  
            <a href="itms-services://?action=download-manifest&url=https://xxxx/ipa_install_online/App.plist"><font size="20">在线安装</font></a>
            </br>
            <img src="2wei.png"/>
        </body>
    </html>  
    相关文章:
      Post Comment.
      quote 1.古树悬叶
      2014/8/9 19:23:36
      wireless distribution ipa
      quote 2.古树悬叶
      2014/8/9 19:34:31
      其它关于扫描二维码自动识别手机APP下载地址的文章:http://www.baidufe.com/item/92457b4d0bfde1effa40.html
      quote 3.古树悬叶
      2014/9/26 3:20:39
      在 iOS7.x 版本以前 bundle-identifier 允许使用通配符,但在 iOS8 中 bundle-identifier 的值必须与 APP 打包时配置文件中 APP 的 ID 一致。

      发表评论