关于code sign的简单理解

阅读人群:IOS开发新手

刚接触IOS开发,每次真机调试的时候或多或少都会遇到code sign的错误,更郁闷的是因为对code sign理解不透彻,导致提交app store的push notification没有生效,苹果的审核慢是出了名的,白白浪费了很多时间。

对此,苹果官方也有详细的解释:

http://developer.apple.com/library/ios/#documentation/ToolsLanguages/Conceptual/DevPortalGuide/Introduction/Introduction.html#//apple_ref/doc/uid/TP40011159-CH1-SW1

不过我更喜欢提炼出干货,以更加简单的方式总结一下,希望对新人有益。

下面是 iOS Provisioning Portal的截图,几个概念必须要介绍一下:


关于code sign的简单理解

1、Certificates是你的开发证书,这个是需要花99刀买的,表示你获得了苹果的开发授权,相当于开发者唯一标识。

2、Devices是用来管理你需要真机测试的设备,99刀附送的福利包括你可以添加100个设备来真机测试,就是说发布app store之前可以通过Development或者Ad Hoc方式来对你的app进行真机测试。设备就是指iPhone、ipod、ipad等,都是以UDID来进行唯一标识的。

3、APP IDs就是你要开发的app唯一标识,在这里你可以对app进行push notification和In-App Purchase等进行配置,可以下载配置后的push notification证书,通过java等服务来发送notification。

4、上面说的三种分表代表了三方面因素:唯一的开发者、唯一的设备、唯一的app,一般真机测试都需要将这三者关联起来(提交app store不用跟设备关联),这样才能表示唯一的开发者在唯一的设备上调试着唯一的app,那么用什么来关联呢,答案就是Provisioning,这个包含了前面这三种信息,看看新建provisioning发生了什么事情:


关于code sign的简单理解
 让你输入开发者、app id和设备信息,这就表示一个Provisioning包含了这三种信息,配置好后,下载之后打开,默认安装在Windows——》organizer——》devices里。

 

真机调试的时候,需要在Targets——》Build Settiings——》Code Signing中对各种debug、release以及各种版本进行code sign配置,如果你是在开发阶段,你就需要选择通用的Provisioning(下面会介绍),或者你单独对这个app新建的Provisioning,如果是提交app store的时候,就需要新建下载并安装Distribution Provisioning,这个Provisioning包含你对app id的配置,我之前遇到的push notification不生效的问题就是因为我更新了app id(设置push notification enable),但没有在本机更新Distribution Provisioning,导致appstore审核通过之后push notification没有生效。

 

最后我要说一下iOS Team Provisioning Profile这个证书:


关于code sign的简单理解
 
这是个证书自动生成的,属于团队开发管理的通用Provisioning,不针对唯一的APP ID,它是一个通用Development Provisioning,目的就是为了让你能调试任何app源代码,你可能从某些网上下载的代码运行的时候会遇到code sign问题,选择这个Provisioning就没有问题了。

当然不管什么Provisioning ,device都是受限制的,最多100个,不然app store就没有意义了。

你可能感兴趣的:(code)