七牛云储存实现iOS企业版分发

作者: voidxin | 来源:发表于2016-07-21 14:58 被阅读5176次

    iOS企业证书的发版这里就不多说了。
    由于app现在放在公司自己的服务器中,为了实现https的plist下载链接还特意把plist挂在了开源中国上。小公司,带宽小,多用户升级的时候给公司服务器带来不小的压力。所以最近工头有把ipa挂在七牛上去的想法,这样就可以有效的缓解服务器的压力。
    企业版分发的plist下载链接必须是https协议的,所以需要SSL证书。如果你公司没有证书,那么可以使用七牛。
    接下来开始步骤:
    1:使用xcode打包生成ipa文件(过程不多说)
    2:登陆七牛(默认你已有账号,没账号请注册)
    3:登陆之后添加资源:

    添加资源.png

    4:创建空间:

    创建空间.png

    5:创建成功之后在资源列表中你可以看到你新创建的资源:

    资源列表.png

    6:选中你新创建的资源名称,然后选中内容管理-->上传文件(这里先上传ipa文件):

    上传文件.png

    7:上传ipa文件成功之后查看文件的外链接,如图:(你看到的链接可能并不是https的而是http的,这里后面再说明)

    外链接.png

    8:复制ipa文件的外链,接下来就是要上传plist文件了,首先创建plist文件:

    plist文件内容.png

    在plist文件的url中填写你复制的ipa的外链。其他的只需填写bundle-identifier为你的项目的id即可,title中填写你app的名称,其他的可不变。然后保存plist文件。
    9:接下来就是上传plist文件到七牛了,同ipa文件的上传一样,上传成功后点击外链接即可查看外链:


    plist.png

    10:接下来是最重要的一步,因为你会发现你上传的plist文件的外链接并不是https的,而企业版分发的plist下载链接必须是https。所以别急.先在查看内容中保存默认域名,然后选中你创建的空间名称,你会看到页面上有个“融合CDN加速域名”的title,点击添加HTTPS域名:

    点击保存域名.png https域名.png

    好了,此时你再去内容管理中,点击你之前上传的plist文件查看它的外链接,你会发现它已经是https的了。
    ok,https链接的plist文件已生成,复制链接,在代码中:

    #warning 测试代码
        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
            UIApplication *application = [UIApplication sharedApplication];
            [application openURL:[NSURL URLWithString:[NSString stringWithFormat:@"itms-services://?action=download-manifest&url=https://你的plist外链接地址.plist"]]];
            exit(0);
        });
    

    就可以升级了。
    有时你会发现,在你要升级版本的时候,你虽然更换了ipa文件,但是plist文件地址所对应的url的升级包并没有变,或者你连plist文件中的url也更新重新上传,但是你再次打开plist的外链你会发现plist的内容并没有修改。为此我忙活了半天不知道为什么。后来才知道这是由于七牛缓存的原因,所以你每次要发版的时候,在你上传完ipa文件的时候,最后能去刷新一下plist文件和ipa文件,在个人看板中:


    个人中心.png

    有个刷新预取得功能,复制ipa的链接或plist的外链到那里即可刷新(刷新是有次数限制的):

    刷新预取.png

    恩,刷新完时候你就可以愉快的升级了。(缓存很啃爹,请慢慢摸索)。
    最后奉上plist文件的源码:

    <?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>ipa文件的外链,这个外链可以不是https的,也就是说http即可</string>
                    </dict>
                    <dict>
                        <key>kind</key>
                        <string>full-size-image</string>
                        <key>needs-shine</key>
                        <true/>
                        <key>url</key>
                        <string></string>
                    </dict>
                    <dict>
                        <key>kind</key>
                        <string>display-image</string>
                        <key>needs-shine</key>
                        <true/>
                        <key>url</key>
                        <string></string>
                    </dict>
                </array>
                <key>metadata</key>
                <dict>
                    <key>bundle-identifier</key>
                    <string>你的bundleID</string>
                    <key>bundle-version</key>
                    <string>1.2.0</string>
                    <key>kind</key>
                    <string>software</string>
                    <key>subtitle</key>
                    <string>App</string>
                    <key>title</key>
                    <string>app名称</string>
                </dict>
            </dict>
        </array>
    </dict>
    </plist>
    

    ok,以上总结有什么不对或瞎扯的地方欢迎在下方留言中指出。
    ps:无demo不文章,抱歉,真没有demo。

    相关文章

      网友评论

      • 秋S寂S:为啥下载下来的版本不是打出来的版本啊。。。。无语,啥情况
      • zhaihongxia:你好,请问你有没有遇到7plus手机安装不显示进度图片的
      • 看不见深海的灆:这个 https 怎么 弄得 没有 看懂
      • 入坑weex:使用个人或者公司开发者账号,与企业开发者账号分发有什么区别?
        voidxin:@入坑weex 企业版不能上传app store
      • iSuAbner:坑爹的缓存
      • 像个被吓坏的孩子:openURL后面的东西太有用了。找了一早上,要么是说html地址,要么说ipa地址,要么说plist地址。
        秋S寂S:plist地址
      • lepjdk:生成的plist链接打开怎么还提示是否打开Appstore呢,是否有办法去掉这个提示可以呢?
        voidxin:@lepjdk 项目中升级时下载ipa包的那段代码,按理提示应该是七牛的提示,不是跳转到appstore的提示
        lepjdk:@voidxin 是plist里面的代码吗?
        voidxin:@lepjdk 方法不对吧,贴下你代码
      • Melody_YM:我打包企业级ipa用iTunes安装无异常,就是通过plist安装时,显示无法下载应用,请问是怎么回事啊????
        voidxin:@打草篓兔子 可以更新
        Pony风:@voidxin ios10系统的好像只能卸载重新安装吧,更新是更新不了的。不知道是不是系统bug。
        voidxin:@Melody_YM 1:确保你的plist地址是https的 2:检查plist文件里的ipa包的映射地址是否写对
      • 骑驴去旅行:你是怎么实现版本的更新的.在项目中怎么提示需要更新? :smile:
        voidxin:@娜比快乐 不需要配置证书,安装失败主要是你plist文件指向的ipa地址有问题,检查一下地址,如果地址没错你就去七牛上刷新一下缓存,缓存很坑
        骑驴去旅行: 谢谢,现在我用plist安装一直提示安装失败,如果单独用ipa文件可以安装成功,这个需要配置什么证书吗?安装的时候?
        voidxin:@娜比快乐 具体看你的需求,可以叫你们公司的后台做个接口来控制更新,接口主要穿过来的是当前最新版本的版本号,然后你可以每次启动app的时候都调用接口获取服务器传过来的版本号和app的版本号对比,如果获取到的版本号比app的版本号大,那就走更新的逻辑。这是目前我采用的方式。

      本文标题: 七牛云储存实现iOS企业版分发

      本文链接:https://www.haomeiwen.com/subject/klybjttx.html