iOS打包和发布流程

学习iOS的打包和发布流程。

两种证书

App证书分为两种:开发证书、发布证书。App发布证书分:AppStore(正常的发布到商店) 及 Adhoc(内部测试发布) 两种。

真机运行(dev)

真机调试指 mac 连上 iphone, xcode 可以直接以这台 iphone 设备为 build target, 能在 iphone 里执行编译结果
为什么真机调试?

部分功能需要硬件支持,模拟器是不支持的,如:
传感器:磁力计、陀螺仪、距离传感器等
特定功能:拍照、打电话、发短信、蓝牙等

真机的环境和模拟器的环境是不一样,模拟器是使用电脑的环境, CPU、Memory、Disk、Network 这些和真机环境都不一样,有些bug可能会在特定的环境才会出现,比如网络非常慢,内存特别小的时候,可能在模拟器上不会有bug,在真机上就有可能出现bug
使用真机开发比使用模拟器体验更好

Xcode7以前:

真机调试的主要步骤:

  • 登录开发者主页
  • 生成cer证书:cer是一个跟电脑相关联的证书文件,让电脑具备真机调试的功能
  • 添加App ID:调试哪些app?
  • 注册真机设备:哪台设备需要做真机调试?
  • 生成MobileProvision文件:结合2、3、4生成一个手机规定文件
  • 导入cer、MobileProvision文件

最终会得到2个文件:

  • Cer文件:让电脑具备真机调试的功能
  • MobileProvision文件:哪台设备、哪些app、哪台电脑需要做真机调试?

Xcode7以后

Xcode–>Preferences—>Accounts—> Add Apple ID 然后选择真机直接允许App,弹出来个框点击Fix Issue即可,这样就完成真机测试了。

Xcode7.0真机测试Apple ID必须加入苹果开发者计划,而Xcode7.0之后直接使用普通的Apple ID即可真机测试。注意Xcode7.0之后并不是不需要.cer和.mobileprovision文件,而是苹果已经生产了这两个文件,并将.cer文件安装到钥匙串访问里,.mobileprovision已经复制到Library/MobileDevice/Provisioning Profiles文件夹中.

iOS真机调试详解

测试打包

  1. 登录apple的开发者主页:developer.apple.com
  2. 选择Ad Hoc生成一个ios_distribution.cer: 让电脑具备打包程序的能力
  3. 新建一个App ID : 方便打包哪个程序
  4. 利用用户设备的UDID注册设备
  5. 选择Ad Hoc利用ios_distribution.cer + 设备UDID + App ID –> 描述文件

    (描述文件的作用:
    1> 能知道在哪台电脑上, 为哪台设备打包哪个程序
    2> 哪台设备需要安装打包哪个程序    )
    
  6. 最终产生了3个文件

    1> CertificateSigningRequest.certSigningRequest(CSR证书)
    * 包含了电脑的信息
    * 发送给苹果服务器, 苹果服务器根据文件信息来生成一个电脑证书
    * 生成的证书就可以让对应的电脑具备某个特殊的能力
    2> ios_distribution.cer
    * 打包证书
    * 安装这个证书后, 电脑就具备打包程序的能力
    3> nj_iphone6_news.mobileprovision
    * 里面包含了3个信息:ios_distribution.cer + 设备UDID + App ID
    
  7. 安装证书和描述文件

    1> ios_distribution.cer
    2> nj_iphone6_news.mobileprovision
    
  8. 项目Scheme右边的设备选择iOS Device

  9. 点击Xcode的菜单
    Product –> Archive –> Distribute –> ….Ad Hoc… –> 选择对应的描述文件
  10. 生成一个ipa文件,发给测试人员和客户

更多:使用Jenkins搭建iOS/Android持续集成打包平台

发布

四种发布方式:

苹果应用商店发布AppStore

  1. developer.apple.com : 开发者主页, 配置证书\AppId\描述文件

    1>发布的证书, 说清楚哪台电脑可以发布程序
    2>添加发布的描述文件,描述在哪台计算机上能够发布哪些应用程序
    
  2. iTunesConnect网站(专门用来发布应用程序)
    https://itunesconnect.apple.com

    1>    如果想挣钱,先设置在Agreements, Tax, and Banking设置个人储蓄卡信息
    做一次就行
    2> 添加应用程序
    - 名称,不能重复,可以使用 - 添加一些后缀信息
    - 关键字,增加软件被搜中的几率,使用英文的都好分隔,不能超过255个字节
    -图片,图片文件名称中不能有中文
    - Rating,设置应用程序的等级,默认都选择最低的,成人,赌博……
    - App Review Information
    提供给苹果的审核人员,来辅助测试使用的。
    如果有测试帐号,必须提供!
    如果有测试数据,需要提供给苹果,例如快递查询!
    需要提供联系人的联系方式,电子邮件,电话需要添加国际区号,+86
    3> 从Xcode6开始,上传完应用程序之后,程序默认会在prerelease中,需要等待5~50分钟不等。只有Prerelease中的状态变化后,才能够在Versions中添加Build,提示,这个过程中,不要重复在Xcode中上传。    
    4> 所有准备就绪后,点Submit按钮提交应用程序,出现的三个选项,都选择No。
    卡通形象,第三方内容,商标!
    5> 等待,2天~20天不等……
    

苹果应用商店批量购买发布(Volume Purchase Program)

Ad Hoc应用发布方式.

Ad Hoc方式发布应用,应用的具体内容也不需要经过苹果的评审,但限制每个应用不能发布到超过100个设备上。如果应用需要小规模的测试或者企业规模很小可以采用这种方式发布企业应用.

In-House企业应用发布

In-House企业应用是不能提交到App Store,发布应用的具体内容也是不需要苹果官方审核.安装设备的数量目前也没有任何限制.所以权限最为开放,适合针对支持开放大批量对外用户测试使用.所以你看到很多第三方开放渠道下载IPA其实基于其他企业账号来支持的.

内网OTA

OTA即Over-the-Air,是Apple在 iOS4 中新加的一项技术,目的是让开发者能够脱离Appstore,实现从自己的服务器下载并安装iOS应用。简单地说,就是用户只需要在Safari中点开一条链接,就能直接在主界面中安装App。

实现步骤

  1. 用Xcode打包release版本
  2. 搭建本地Web服务器
  3. 开启HTTPS
  4. 编写好对应的.plist文件
  5. 上传ipa、.plist、ca证书到Web服务器,配置好index.html
  6. 在手机上用Safari打开链接,完成下载

更多参考:
一步一步实现无线安装iOS应用(内网OTA)
jenkins中集成OTA发布

APNS远程通知

iOS中提供了2种推送通知:

  • 本地推送通知(Local Notification):不需要联网就能发出的推送通知(不需要服务器的支持)定时提醒用户完成一些任务

  • 远程推送通知(Remote Notification):就是从远程服务器推送给客户端的通知(需要联网)远程推送服务,又称为APNs(Apple Push Notification Services)

  1. 创建支持远程推送功能的App ID
  2. 申请开发者证书,并选中刚刚创建的App ID
  3. 下载CER文件,并导入钥匙串管理
  4. 申请发布证书,并选中刚刚创建的App ID
  5. 下载CER文件,并导入钥匙串管理
  6. 检查App ID,确认证书已经指定

基本代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
#ifdef __IPHONE_8_0
// 注册接收通知的类型
UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound categories:nil];
[application registerUserNotificationSettings:settings];

// 注册允许接收远程推送通知
[application registerForRemoteNotifications];
#else
// 如果是iOS7.0,使用以下方法注册
[application registerForRemoteNotificationTypes:UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound];
#endif
}

补充:

  1. PushMeBaby是一款用来测试ANPs的开源Mac项目:https://github.com/stefanhafeneger/PushMeBaby它充当了服务器的作用,用法非常简单。它负责将内容提交给苹果的APNs服务器,苹果的APNs服务器再将内容推送给用户的设备。将推送的调试证书改为名apns.cer,添加到PushMeBaby项目中。
  2. JPush:https://www.jpush.cn
    一套远程推送解决方案,支持android和iOS两个平台。
    它能够快捷地为iOS App增加推送功能,减少集成APNs需要的工作量、开发复杂度。[集成iOS SDK]
    (http://docs.jpush.cn/pages/viewpage.action?pageId=2621727)
    JPush会自动记录和管理所有安装过此app的设备deviceToken
    利用JPush,可以轻易地给所有设备发送远程推送通知.

更多参考:

iOS 程序从开发完到上 AppStore 那点事儿
苹果企业账号打包发布APP流程详解

文章目录
  1. 1. 两种证书
  2. 2. 真机运行(dev)
    1. 2.0.1. Xcode7以前:
    2. 2.0.2. Xcode7以后
  • 3. 测试打包
  • 4. 发布
    1. 4.1. 苹果应用商店发布AppStore
    2. 4.2. 苹果应用商店批量购买发布(Volume Purchase Program)
    3. 4.3. Ad Hoc应用发布方式.
    4. 4.4. In-House企业应用发布
      1. 4.4.1. 内网OTA
  • 5. APNS远程通知
  • 更多参考:
  • 本站总访问量 本站访客数人次 ,