一、苹果账号
1、公司团队账号 (Company/Organization):
费用99美金一年, 该账号在App Store销售者可以显示类似Studios,或者自定义的团队名称 ,比如Mamshare INC,公司账号可以允许多个开发者协作开发,比个人多一些帐号管理的设置,可以设置多个AppleID,分4种管理级别权限,详细见备注。100个苹果的iOS设备UDID测试。但是申请时需要填写公司的邓白氏编码(D-U-N-S)。
2、企业账号 (Enterprise)
费用299美金一年, 该账号开发应用不能发布到App Store,只能企业内部应用,苹果的iOS设备UDID数量不限制。企业账号适合不希望上线App Store,但是需要企业内部比如1000人的iOS设备都部署。公司测试部门需要全公司测试设备,突破100个UDID的限制。
二、证书/推送证书说明
1、概念介绍
1.1、Certificate
证书是用来给应用程序签名的,只有经过签名的应用程序才能保证他的来源是可信任的,并且代码是完整的,未经修改的。在Xcode Build Setting的CodeSigning Identity中,可以设置用于为代码签名的证书。
证书主要分为两类:Development和Production,Development证书用来开发和调试应用程序,Production主要用来分发应用程序(根据证书种类有不同作用),下面是证书的分类信息:(括号内为证书有效期)
1)、Development
App Development (1年):用来开发和真机调试应用程序。
Push Development (1年):用来调试Apple PushNotification
2)、Production
Ad Hoc :用来发布AdHoc的应用程序。
App Store :用来发布提交App Store的应用程序。
Push Production (1年):用来在发布版本中使用Apple PushNotification
1.2、App ID
App ID用于标识一个或者一组App,App ID应该是和Xcode中的Bundle ID是一致的或者匹配的。App ID主要有以下两种:
1)、Explicit App ID:
唯一的App ID,这种App ID用于唯一标识一个应用程序,例如com.wzc.demo,标识Bundle ID为com.wzc.demo的程序。
2)、Wildcard App ID:
通配符App ID,用于标识一组应用程序。例如*可以表示所有应用程序,而com.wzc.*可以表示以com.wzc开头的所有应用程序。
每创建一个App ID,我们都可以设置该App ID所使用的APP Services。每种服务都有着不同的要求,例如,如果要使用Apple PushNotification Services,则必须是一个explicit App ID,以便能唯一标识一个应用程序。下面是目前所有可选的服务和相应的配置要求。
如果你的App使用上述的任何一种service,就要按照要求去配置。
1.3、Device
Devices中包含了该账户中所有可用于开发和测试的设备。 每台设备使用UDID来唯一标识。每个账户中的设备数量限制是100个。
1.4、Provisioning Profile
一个Provisioning Profile文件包含了上述的所有内容:证书、App ID、设备。要打包或者在真机上运行一个应用程序,首先需要证书来进行签名,用来标识这个应用程序是合法的、安全的、完整的;然后需要指明它的App ID,并且验证Bundle ID是否与其一致;再次,如果是真机调试,需要确认这台设备能否用来运行程序。Provisioning Profile就把这些信息全部打包在一起,方便在调试和发布程序打包时使用,这样只要在不同的情况下选择不同的profile文件就可以了。而且Provisioning
Profile文件会在打包时嵌入.ipa的包里。
例如,如下图所示,一个用于Development的Provisioning Profile中包含了该Provisioning Profile对应的App ID,可使用的证书和设备。这意味着使用这个Provisioning Profile打包程序必须拥有相应的证书,并且将App ID对应的程序运行到Devices中包含的设备上去。
如上所述,在一台设备上运行应用程序的过程如下:
与证书一样,Provisioning Profile也分为Development和Distribution两种:
1)、Development (1年)
2)、Distribution (1年)
Ad Hoc
App Store
Ad Hoc的包只能运行在该账户内已登记的可用设备上,显然是有最多100个设备的数量限制。所以这两种Provisioning Profile文件的区别就在于其中的设备限制不一样而已,而他们所使用的Certificate是相同的。
2、程序打包介绍
2.1、苹果程序打包方式介绍
1)、Save for iOS App Store Deployment
保存到本地准备上传App Store
或者在越狱的iOS设备上使用
2)、Save for Ad Hoc Deployment
保存到本地准备在账号添加的可使用设备上使用(具体为在开发者账户下添加可用设备的udid),该app包是发布证书编译的.
3)、Save for EnterpriseDeployment
这种主要针对企业级账户下准备本地服务器分发的app
4)、Save for Development Deployment
针对内部测试使用,主要给开发者的设备(具体也为在开发者账户下添加可用设备的udid)。该app包是开发证书编译的
我们现在提供给测试打包,测试环境和HK环境都使用第三种方式打包(Save for EnterpriseDeployment),这样程序安装包可以安装在任意一台iPhone手机上,方便测试发给市场等公司内部同事安装体验;ME环境使用第二种方式打包(Save for Ad Hoc Deployment),第二种方式使用的发布证书与正式提交AppStore的版本使用的证书是一样的,因此他们可以共用同一推送证书,这样就可以测试ME环境的推送流程是否有问题了,这种方式打包的程序只可以运行在我们已经添加到开发账户对应的devices设备上使用
3、推送注意
使用苹果的推送服务,需要注意以下几点:
a. APNS是免费的。只要有开发者账号便可以申请APNS证书。
b. APNS是不可靠的,苹果对信息推送的可靠性不做任何保证。
c. APNS对消息的大小是有限制的,总容量不能超过256字节。
如果需要推送成功,需要保证 程序打包使用的证书 和服务器端推送使用的证书以及推送网址需要保持一致,才可以推送成功。一般对应逻辑如下:
Product证书--->Product推送证书--->Product证书打包的程序对应的devicetoken--->Product推送网址(ssl://gateway.push.apple.com:2195)
Development证书--->Development推送证书--->Development证书调试的程序对应的devicetoken--->Development推送网址(ssl://gateway.sandbox.push.apple.com:2195)。
三、提交AppStore后,Cornerstone打Tag步骤:
1.在Cornerstone找到要打Tag的程序,右击弹出下图,选着Tag...:
2.弹出下图,解释如下:
Tag As:tag的名称,一般为做tag记录的文件夹名称_版本号_日期
Where:tag对应的路径,一般选择ios_app/tags
Revision:一般默认的为最后提交的版本