iOS开发-Certificates、Identifiers和Profiles详解
如果是才进入公司进行开发的iOS程序猿来说人难免会对苹果的证书、配置文件,尤其有的需要重头开始的公司来说,最简单的来说真机调试是免不了和这些东西打交道的,有的时候赶时间做完了可能心里也犯嘀咕,本文根据个人经验对Certificates、Identifiers和Profiles做下简单的介绍,不过默认你已有苹果账号,如果你还在学习的路上,将来有一天你也会有的,开始正题吧:
1.登录苹果官网,苹果在WWDC15之后对网站进行了改版,以下是最新的截图:

2.三合一的管理模式:

3.管理iOS Apps,这个就是网上有的时候会看到的图片,隐藏了账号信息;

如果进入了这里就到了文章的重点,接下来就解释这些选项的作用(本文链接:http://www.cnblogs.com/xiaofeixiang,iOS技术交流群:228407086)
Certificates(证书)
证书主要分Development和Production两类,Development证书用来开发和调试应用程序,Production主要用来分发应用程序,不同的种类的证书功能不一样:
Development:
- App Development (1年):用来开发和真机调试应用程序。
- Push Development (1年):用来调试Apple Push Notification
Production:

App Store and Ad Hoc (3年):发布App Store和AdHoc的应用程序;
Apple Push Notification service SSL (Production)(1年):在发布版本中使用Apple Push Notification;
VoIP Services Certificate
Pass Type ID Certificate
Website Push ID Certificate
标注过的证书都用过,未标注本人没有使用过,不敢误人子弟。在Xcode的Code Signing中,可以设置用于为代码签名的证书。
小贴士:
我们申请一个Certificate之前,需要先申请一个Certificate Signing Request (CSR) 文件,如图所示:

这个过程中实际上是生成了一对公钥和私钥,保存在自己的Mac的Keychain中。代码签名正是使用这种基于非对称秘钥的加密方式,用私钥进行签名,用公钥进行验证。图片来源网上,原理大同小异,在自己Mac的keychain的login中存储着相关的公钥和私钥,而证书中包含了公钥。你只能用私钥来进行签名,所以如果没有了私钥,证书也就没有意义。因此在申请完证书时,最好导出并保存好你的私钥。当你的团队有新成员或其他设备需要共享证书时,用同一私钥就可以。私钥保存在自己的Mac中,而苹果生成的Certificate中包含了公钥。当用自己的私钥对代码签名后,苹果就可以用证书中的公钥来进行验证,确保是本人对代码进行了签名,而不是被冒充,确保代码的完整性。

Identifiers(标识)
Identifiers分为六种,App IDs,Pass Type IDs,Website Push IDs,iCloud Containers,App Groups和Merchant IDs,其中App IDs是最常用的,其他的五种没有使用过,重点说下App IDs,App IDs用于标识一个或者一组App,App ID应该是和Xcode中的Bundle ID是一致的或者匹配的。App IDs主要有以下两种:
- Explicit App ID:唯一的App ID,这种App ID用于唯一标识一个应用程序,例如com.cnblogs.xiaofeixiang,标识Bundle ID为com.cnblogs.xiaofeixiang的程序。
- Wildcard App ID:通配符App ID,用于标识一组应用程序。例如*可以表示所有应用程序,而com.cnblogs.*可以表示以com.cnblogs开头的所有应用程序。
每创建一个App ID,我们都可以设置该App ID所使用的APP Services,也就是其所使用的额外服务,如下图所示可以进行勾选:

Devices(设备)
随着苹果帝国的发展,现在设备类型分为Apple TV,Apple Watch,iPad,iPhone和iPod Touch五类。Devices中包含了该账户中所有可用于开发和测试的设备。 每台设备使用UDID来唯一标识。每个账户中的设备数量限制是100个。Disable 一台设备也不会增加名额,只能过了一年之后才能删除,所以如果机器比较多慎用。
Profiles (配置文件)
配置文件,分为两种,一种是Development,另外一种是Distribution,如下图:

Provisioning Profile文件包含了上述的所有内容:证书、App ID、设备,我们先思考两秒,如果没有配置文件我们如何在真机上运行一个应用程序:
①通过证书来进行签名,用来标识这个应用程序是合法的、安全的、完整的。。
②指明它的App ID,并且验证Bundle ID是否与其一致;
③如果是真机调试,需要确认这台设备能否用来运行程序;
Provisioning Profile就把这些信息全部打包在一起,方便我们在调试和发布程序打包时使用,这样我们只要在不同的情况下选择不同的profile文件,而且这个Provisioning Profile文件会在打包时嵌入.ipa的包里。团队的Provisioning Profile中包含了该Provisioning Profile对应的App ID,可使用的证书和设备,通过Provisioning Profile打包程序拥有与之相应的证书,并且是将App ID对应的程序运行到Devices中包含的设备上去。

苹果官网关于配置文件的介绍:https://developer.apple.com/library/mac/documentation/IDEs/Conceptual/AppStoreDistributionTutorial/RevisionHistory.html#//apple_ref/doc/uid/TP40013839-CH99-SW1,附赠iOS技术交流群:228407086~
iOS开发-Certificates、Identifiers和Profiles详解的更多相关文章
- iOS开发--常用技巧 (MJRefresh详解)
iOS开发--常用技巧 (MJRefresh详解) https://github.com/CoderMJLee/MJRefresh 下拉刷新01-默认 self.tableView.head ...
- iOS开发——多线程OC篇&多线程详解
多线程详解 前面介绍了多线程的各种方式及其使用,这里补一点关于多线程的概念及相关技巧与使用,相信前面不懂的地方看了这里之后你就对多线程基本上没有什么问题了! 1——首先ios开发多线程中必须了解的概念 ...
- iOS开发——屏幕适配篇&Masonry详解
Masonry详解 前言 MagicNumber -> autoresizingMask -> autolayout 以上是纯手写代码所经历的关于页面布局的三个时期 在iphone1-ip ...
- iOS开发——UI篇OC&transform详解
transframe属性详解 1. transform属性 在OC中,通过transform属性可以修改对象的平移.缩放比例和旋转角度 常用的创建transform结构体方法分两大类 (1) 创建“基 ...
- ios开发——实战OC篇&FMDB详解
FMDB详解 前一篇文章中我们介绍的SQLite的使用,在iOS中原生的SQLite API在使用上相当不友好. 于是,就出现了一系列将SQLite API进行封装的库,例如FMDB.Plausibl ...
- iOS开发——实用技术OC篇&事件处理详解
事件处理详解 一:事件处理 事件处理常见属性: 事件类型 @property(nonatomic,readonly) UIEventType type; @property(nonatomic ...
- iOS开发中UIPopoverController的使用详解
这篇文章主要介绍了iOS开发中UIPopoverController的使用,代码基于传统的Objective-C,需要的朋友可以参考下 一.简单介绍 1.什么是UIPopoverController ...
- 【转】IOS开发网络篇之──ASIHTTPRequest详解
ASIHTTPRequest 详解, http 请求终结者 版权归旺财勇士所有〜转载需声名〜 原贴地地址:http://wiki.magiche.net/pages/viewpage.action?p ...
- IOS开发网络篇之──ASIHTTPRequest详解
目录 目录 发起一个同步请求 创建一个异步请求 队列请求 请求队列上下文 ASINetworkQueues, 它的delegate提供更为丰富的功能 取消异步请求 安全的内存回收建议 向服务器端上传数 ...
随机推荐
- [python]接口签名
一个主机中的数据要通过外网发送数据给另外一个主机,为了保证接口安全,需要对接口进行签名,由于重放攻击貌似对这种接口无效,所以没有加入时间戳 直接放代码: #!/usr/bin/env python # ...
- NLP文本相似度(TF-IDF)
本篇博文是数据挖掘部分的首篇,思路主要是先聊聊相似度的理论部分,下一篇是代码实战. 我们在比较事物时,往往会用到“不同”,“一样”,“相似”等词语,这些词语背后都涉及到一个动作——双方的比 ...
- Android中,利用Intent传递对象值
在很多情况下,调用startActivity(Intent) 方法,跳转到另外一个Activity或其他component,需要传递一个对象给它. 可以让这个要传递的对象所属类实现Serializab ...
- [Java]struts2-spring整合时配置监听器
1.struts2-spring整合时配置监听器 [在web.xml中] <!-- 上下文载入器监听器,确保web服务器启动时,直接完成spring容器的初始化 --/> [Ctrl + ...
- Codeforces Round #272 (Div. 2) E. Dreamoon and Strings 动态规划
E. Dreamoon and Strings 题目连接: http://www.codeforces.com/contest/476/problem/E Description Dreamoon h ...
- Mac安装jdk1.6
需到apple官网下载 下载地址:https://support.apple.com/kb/DL1572?viewlocale=en_US&locale=en_US 相关介绍: http:// ...
- MikroTik RouterOS安装到SATA硬盘
其实这个问题再5.x以上的版本就已经不存在这个问题,基本现在的版本都支持SATA,如果不支持,估计用的是2.x版本的,那么只需要设置成混合模式(百度)即可.
- HDU 4771 Stealing Harry Potter's Precious (2013杭州赛区1002题,bfs,状态压缩)
Stealing Harry Potter's Precious Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 ...
- STM32 Timer : Auto-reload register register
Auto-reload register (TIMx_ARR) The auto-reload register is preloaded. Writing to or reading from th ...
- C#怎么通过一个按钮Button,实现点击这个按钮可以打开一个文件或者文件夹?
string path1 = @"d:\log.txt"; //打开D盘下的log.txt文件 System.Diagnostics.Process.Start(path1); ...