超级签,企业签,TF签

  • 为什么需要签名?
  • 我们使用的iPhoneiPad都是IOS系统,它是属于苹果封闭的移动操作系统。
  • 我们开发一款APP,正常情况必须上架到AppStore,然后用户通过AppStore进行下载,做过AppStore应用上架的小伙伴都知道,苹果为了营造一个良性的生态,所以对每一款应用进行监测,会用到机器审核,开发者账号监测,应用内容审核等等,这就导致了应用更新的周期难,加上一些限制或其它因素无法上架。这个时候就应运而生了上述的几种签名系统。
  • 企业签名 大型企业才能注册的苹果企业账号,用于企业内部的应用测试分发的账号。分发特点是签名包具有时效性,比如签名时长为一个月,一个月之后包就不能使用了,需要重新签名,用户需要重新下载,安装完成打开的时候会提示未受信任的企业证书,需要手动去点击信任才能打开应用。
  • 超级签名 利用普通的开发者账号100个测试资格来安装测试应用,需要获取用户的UDID并绑定到开发者账号才能打包。关于掉签问题,当苹果检测到这个开发者账号异常,会对账号进行封号或限制处理,这个时候用户端就出现应用无法打开的问题,这种情况就叫做掉签,需要用户端重新下载应用,服务提供商需要替换新的账号。
  • TestFlight签名(TF签名) TestFlight是苹果公司为开发者提供的一个应用Beta版测试的软件,即应用正式发布之前,可以现在TestFlight上更新,然后用户通过邀请链接点击下载测试应用,特点是所有用户必须先通过AppStore安装TestFlight这款软件。同时TestFlight限制测试人数为10000人,测试周期是90天,即应用更新一次仅90天内有效,用户安装完成后90天内可任意使用,90天过后如果不更新则无法打开应用。如果想让更多的人使用TestFlight进行测试,在人数满了10000人后可以在苹果开发者账号里删除参数测试的人即可邀请更多的人测试。这个分包特性是必须开发者先上传一个应用并且通过苹果的预审核机制,然后再次更新时直接替换新的包即可,无需再次审核。

准备工作

  • 苹果开发者账号
  • Linux服务器
  • 域名,SSL证书
  • Ad HocIPA
  • zsign Maybe is the most quickly codesign alternative for iOS12+ in the world, cross-platform ( macOS, Linux , Windows ), more features.

苹果账号设置

.mobileconfig 的生成和签名。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?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>PayloadContent</key>
<dict>
<key>URL</key>
<string>【自定义】用户端授权访问的回调地址;此链接处理完成后必须响应一个301重定向请求。</string>
<key>DeviceAttributes</key><!-- 设备属性列表,数组里面添加的属性,授权后会返回到服务器,是以POST请求XML格式返回的数据。 --!>
<array>
<string>UDID</string><!-- UDID作为唯一识别码,需要注册到开发者账号,才能为这个设备打包。这个为必须,下面几个参数可选择性读取。 --!>
<string>IMEI</string>
<string>ICCID</string>
<string>VERSION</string>
<string>PRODUCT</string>
</array>
</dict>
<key>PayloadOrganization</key>
<string>PayloadOrganizationValue</string>
<key>PayloadDisplayName</key>
<string>PayloadDisplayNameValue</string>
<key>PayloadVersion</key>
<integer>1</integer>
<key>PayloadUUID</key>
<string>PayloadUUIDVaule</string>
<key>PayloadIdentifier</key>
<string>PayloadIdentifierValue</string>
<key>PayloadDescription</key>
<string>PayloadDescriptionValue</string>
<key>PayloadType</key>
<string>Profile Service</string>
</dict>
</plist>
  • .mobileconfig 是应用描述文件,作用是用户通过Safari浏览器安装,服务器即可获取设备的唯一识别码UDID