目标
企业账号打包的enterprise
类型ipa可以安装到所有的iPhone设备上,这篇文章讲述怎样在自己的服务器上搭建分发下载平台。
准备阶段
1.服务器必须支持Https协议(苹果文档原话:对于 iOS 7.1 或更高版本,使用 HTTPS)
2.ipa文件&&对应的plist文件
Product
->Archive
->Export
->Enterprise
->Addition Options
Name
:应用名称App URL
:ipa包在服务器上的下载地址Display Image URL
:57 x 57 像素的 PNG 图像,在下载和安装过程中显示。指定图像的完全限定 URLFull 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">
<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://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>
<meta charset="utf-8">
<title>Example</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" />
</head>
<body>
<a href="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文件中的内容不一致,修改之后重新部署下就可以下载了。
参考链接
企业帐号进行IPA的打包、分发、下载安装的详细流程(转载)
苹果文档--以无线方式安装企业内部应用
iOS学习之如何查看.ipa测试包用到的证书所包含的UDID
iOS开发各种证书问题