引言
作为一个iOS开发者。。新手或者老手,有没有手欠的revoke过Member Center中的各种证书,删除过各种mobileprovision文件?
一、开发者证书
- 第一种为$99美元的,用来上传appstore的账号:个人和公司没太大区别,公司账号能创建多个子账号,个人的不能
- 第二种为$299美元的,不能用来上传appstore,用来进行企业分发,也就是常说的in-house证书
二、证书类型
- iOS App Development 开发、真机调试用
- Apple Push Notification service SSL (Sandbox) 开发阶段使用苹果的推送服务
- App Store and Ad Hoc 上架和AdHoc方式发布时用
- Apple Push Notification service SSL (Production) 上架后使用苹果推送服务
- In-House 企业版发布,需$299才能拥有,还需邓氏编码
三、embedded.mobileprovision
我们都知道打包app之后,会把Provisioning Profiles文件打包到ipa中,解压ipa就会看见
名字为embedded.mobileprovision
1.查看方式
2..mobileprovision文件包含
- AppId。每个app必须在Member Center中创建一个对应的AppId。规则不累述了。
- 使用哪些证书。上面说了,不同类型的证书就代表了不同的发布方式,还包括一些功能的能否使用(比如APN)
- 功能授权列表
- 可安装的设备列表。对于AdHoc方式发布的app或者真机调试时,会有一个列表,这个列表里面是iOS设备的UDID,每台iOS设备出厂的UDID都不同,所以可以用来标识设备。可通过iTunes连接设备,或者http://dev.skyfox.org/udid/ 这里获取
苹果的UDID设备唯一标识!
四、iOS设备如何验证app是否合法
- 安装后会解压ipa到文件系统
- 取出embedded.mobileprovision,通过签名校验是否被篡改过
- 企业app(设置中的设备管理)https://ppq.apple.com 描述文件在线验证地址,
- 其中有几个证书的公钥,其中开发证书和发布证书用于校验签名
- BundleId
- 授权列表
- 校验所有文件的签名,包括Frameworks
- 比对Info.plist里面的BundleId是否符合embedded.mobileprovision文件中的
五、误删除证书或者Provisioning Profiles文件
1.$99个人证书上架后被删除发布证书或者Provisioning Profiles文件
现象:app可以正常打开,但是尽量不要去删。。。
2.$99个人证书上架前审核时被删除发布证书或者Provisioning Profiles文件
现象:
解决办法:
3.$99个人证书上架后被删除推送(PUSH)证书或者Provisioning Profiles文件
现象:app可以正常打开使用,推送失效
解决办法:
4.$299企业级被删除发布证书或者profile文件
现象:所有已经安装的app不能打开,会闪退(有人说能打开。。。),在线itms-services协议不能安装
解决办法:只能是重新生成证书或者pp文件重新打包所有线上app发布了。。。还有就是可以写离职申请了。。。
如有错误,欢迎纠正与补充