目标
企业账号打包的enterprise类型ipa可以安装到所有的iPhone设备上,这篇文章讲述怎样在自己的服务器上搭建分发下载平台。
准备阶段
1.服务器必须支持Https协议(苹果文档原话:对于 iOS 7.1 或更高版本,使用 HTTPS)
2.ipa文件&&对应的plist文件
Product->Archive->Export->Enterprise->Addition Options
屏幕快照 2018-04-20 05.35.58 PM.png
manifest.plist
Name:应用名称
App URL:ipa包在服务器上的下载地址
Display Image URL:57 x 57 像素的 PNG 图像,在下载和安装过程中显示。指定图像的完全限定 URL
Full Size Image URL:512 x 512 像素的 PNG 图像,表示 iTunes 中相应的应用
生成的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"><plistversion="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://example.com/example.ipa</string></dict><dict><key>kind</key><string>display-image</string><key>url</key><string>https://example.com/image.57x57.png</string></dict><dict><key>kind</key><string>full-size-image</string><key>url</key><string>https://example.com/image.512x512.png</string></dict></array><key>metadata</key><dict><key>bundle-identifier</key><string>com.xxx.xxx</string><key>bundle-version</key><string>1.0.0</string><key>kind</key><string>software</string><key>title</key><string>Example</string></dict></dict></array></dict></plist>
3.下载入口HTML
<!DOCTYPE html><html><head><metacharset="utf-8"><title>Example</title><metaname="viewport"content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"/></head><body><ahref="itms-services://?action=download-manifest&url=https://example.com/manifest.plist">Install App</a></body></html>
整合
把ipa包&&对应的plist文件&&入口HTML文件部署到服务器即可。如果部署好之后,后期有修改plist文件的内容,重新部署之后可能会遇到“无法下载应用”的莫名错误,这是因为manifest.plist文件在客户端的缓存问题,建议把plist文件改个名称再部署下。
三方平台代签企业签名踩到的坑
可能有些公司没有自己的企业账号,使用了三方平台代签企业签名,大致流程是我们用自己的开发者账号打个ad-hoc类型的ipa包,交给三方平台重新签名,拿到企业账号签名后的ipa包就可以搞事情了。
今天拿到蒲公英给我们的ipa包之后,部署到服务器,下载安装时却显示“无法下载应用”的错,排查问题最后发现是manifest.plist文件中的bundle-identifier值和ipa包中的bundle-identifier不一样。
排查步骤
首先怀疑ipa包本身有问题,验证方法:使用itools软件直接安装ipa包,结果可以安装到任意手机,排除ipa包有问题这种可能性。
然后怀疑是manifest.plist文件和ipa包中信息的不一致情况,头一个怀疑对象就是bundle-identifier。验证方法:解压ipa包,找到embedded.mobileprovision文件,复制到桌面,在终端中输入命令:security cms -D -i /Users/xx/Desktop/embedded.mobileprovision,拿到签名用的<key>application-identifier</key> <string>L3562L3CD5.com.xxx.xx</string>这里com.xxx.xx才是真正的bundle-identifier,这与manifest.plist文件中的内容不一致,修改之后重新部署下就可以下载了。