IOS APP通过plist做应用分发

1. 内部分发平台的实现原理

参考:内部分发平台的实现原理—苹果安装app的另一种方式(通过itms-services协议,直接安装IOS应用程序)plist如何做企业分发企业证书不上app store的ip下载方式
ipa在线下载安装

ios安装app时,除了直接用xcode安装外,我们最常用的是通过第三方分发平台(如fir.im)。那么像fir.im这些平台是怎么做到扫码直接安装的呢?。

(1) 二维码:当我们上传我们的app到服务器上的时候,我们会把所有的地址存储起来,并把相关的信息都存储在数据库,这样就会在展示页显示我们app的信息。其实就是一个字段相互引入各自的下载路径,通过判断设备来进行下载,来实现二维码合二为一。
(2) 通过plist下载并安装ipa:当我们上传我们ipa安装包到第三方分发平台时,需要输入各种应用信息(应用名称和图标等); 分发平台获取到上传的安装包后,会生成一个plist文件(内部配置了ipa地址应用名称和图标等信息),通过它我们可以下载对应的ipa文件。

为什么可以通过plist下载ipa(iPhoneApplication)并实现安装的呢?其实是利用了苹果自家的浏览器 safariitms-services 协议来实现:通过itms-services协议,可以通过safari浏览器直接在iOS设备上安装应用程序。利用这种方式,只要在内网布置一个服务器,测试人员只需要通过测试设备的safari浏览器访问特定的url (添加了itms-services 协议的plist地址)既可以实现安装。

2. plist文件说明

plist文件是IOS开发过程中常用来捆绑信息的一种文件格式,它是数据格式是xml。

plist文件配置了ipa地址、应用图标地址 和 应用标示等信息,模版如下:

<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下载地址</string>
                </dict>
                <dict>
                    <key>kind</key>
                    <string>full-size-image</string>
                    <key>needs-shine</key>
                    <true/>
                    <key>url</key>
                    <string>图标下载地址(png格式)</string>
                </dict>
                <dict>
                    <key>kind</key>
                    <string>display-image</string>
                    <key>needs-shine</key>
                    <true/>
                    <key>url</key>
                    <string>图标下载地址(png格式)</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>
plist文件.png

注意:这个plist文件必须通过https访问才可以,因为现在苹果规定必须以https的方式进行访问(如https://www.liy.com.cn/app/ios/test.plist)。添加 itms-services 协议(itms-services://?action=download-manifest&url=)后,在safari中的完整访问地址示例如下 itms-services://?action=download-manifest&url=https://www.liy.com.cn/app/ios/test.plist

3. iOS APP使用企业证书签名后如何让用户安装

3.1 通过第三方平台分发

把ipa文件上传到 蒲公英 或 fir 第三方平台,生成二维码让用户下载安装即可。

3.2 通过企业网站分发(通过plist做企业分发)

(1) 生成并配置plist文件

plist模板如下:复制下面的代码,在电脑上新建一个后缀为.plist的文件复制进去 并 修改对应信息即可。(服务器必须支持SSL)

<?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>https://www.liy.com.cn/app/ios/test.ipa</string>
                </dict>
                <dict>
                    <key>kind</key>
                    <string>full-size-image</string>
                    <key>needs-shine</key>
                    <false/>
                    <key>url</key>
                    <string></string>
                </dict>
                <dict>
                    <key>kind</key>
                    <string>display-image</string>
                    <key>needs-shine</key>
                    <true/>
                    <key>url</key>
                    <string>https://www.liy.com.cn/app/ios/test.png</string>
                </dict>
            </array>
            <key>metadata</key>
            <dict>
                <key>bundle-identifier</key>
                <string>com.taojindaren.test</string>
                <key>bundle-version</key>
                <string>1.00.01</string>
                <key>kind</key>
                <string>software</string>
                <key>subtitle</key>
                <string>UDID</string>
                <key>title</key>
                <string>XinDong.ipa</string>
            </dict>
        </dict>
    </array>
</dict>
</plist>

(2) 将plist 文件和ipa包上传到企业服务器

如企业使用 OSS服务器:OSS(Open Storage Service)开放云存储服务,是阿里云对外的提供的海量,安全和高可靠的云存储服务。

(3) 直接分享如下链接 或 将该链接生成二维码分享出去 即可:如itms-services://?action=download-manifest&url=https://www.liy.com.cn/app/ios/test.plist。其中itms-services://?action=download-manifest&url=为固定前缀,后接plist下载地址,访问该链接后,即能实现通过plist会安ipa。

(4) 若需要前端页面,只需配置如下下载链接即可:

<a href="itms-services://?action=download-manifest&url=https://www.liy.com.cn/app/ios/test.plist"></a>

4. 问题汇总

参考:ios13升级到ios14企业APP出现无法安装解决方案iOS14升级后企业级安装失败csdniOS应用安装失败原因排查

备注:在iOS14上苹果对于自身提供的解决方案中ats的要求更加严格,之前我们通过 itms-services 协议安装应用时只要plist文件是https即可,iOS14之后要求ipa链接使用的也必须是https才行,否则将出现无法安装的问题。

(1) 无法验证其完整性

企业网站分发(小志手机测试):iOS14安装企业证书通过发布的app时提示“无法验证其完整性”

image.png

参考1参考2

通过第三方分发平台fir.im分发(建国手机测试),提示“无法验证其完整性”,

image.png

原因:可能证书过期
解决及新问题:重新打包后不出现该提示,但又提醒“无法验证通过”。
原因:申请描述文件时,类型选择的是Ad Hoc(内测版),该类型需要添加测试设备UDID。
解决:重新申请描述文件,类型选择为In House(企业版),该类型无设备限制,都能安装。

(2) 提示“未受信任的企业级开发者”:打开设置,点击通用,设备管理,选择未受信任的应用程序进入,信任,再次点击信任即可。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容