难得 iOS 客户端上架成功,赶紧记录下这个过程,作为自己的一个经验~

原材料

  1. iOS 收费开发者证书
  2. ruby-china-ios 客户端源码

第一步,修改 ruby-china-ios 客户端源码中的配置

ruby-china-ios 默认配置是对应 ruby-china 的,需要先改为 testerhome 的配置才能获取到 testerhome 的相关信息。

修改方法:

点击右上角用户头像->【个人资料设置】,选择右侧的【管理我的应用】

点击右上角【注册新应用】,输入应用相关信息(回调地址具体填法后续再确定),点击提交

记录下 应用 ID私钥 的值,待会配置客户端要用到。

把 ROOT_URL 改为 https://testerhome.com,OAUTH_CLIENT_ID 改为上一步获取到的 应用 ID,OAUTH_SECRET 改为上一步获取到的 私钥

其它一些内容带有 ruby-china 的地方也对应改为 testerhome ,主题、图标等也根据需要进行调整。具体修改内容可查看 https://github.com/testerhome/ruby-china-ios/commits/master 对应的提交:

第二步、配置推送证书

推送证书需要在 iOS 开发者后台中配置,同时也需要在 testerhome 后台配置 apns_pem

步骤基本和 iOS 推送证书设置指南 里面一致。大致步骤:

1、 修改 APP ID ,启用推送(特别留意 development 和 distribution 的都要 enable ,否则自己本地测试收不到推送)

2、 在开发者后台生成 Apple Push Notification service SSL (Sandbox & Production) 证书

3、 下载证书(一个 .cer 文件),双击导入到钥匙串

4、 打开钥匙串,找到这个证书(正常是 Apple Push Service 开头),右键导出成 p12 文件,后续假设文件名为 cert.p12

5、使用下面的命令生成一个 pem 文件

$ openssl pkcs12 -in cert.p12 -out website.pem -nodes -clcerts

6、把 website.pem 的内容(cat website.pem)配置到后台->全局配置-> apns_pem 中。

测试推送

在本机架设一个 testerhome 网站,按照上面的步骤添加新的应用并配置到 iOS 客户端中:

正常来说,当前客户端登录的用户收到一个通知(如帖子被回复或者被 @)就会有推送出现。

第三步、app store 上架

步骤基本和 iOS App 上架流程 (2016 详细版)一致。大致步骤:

  1. 生成 distribution 证书,然后下载、导入 keychain
  2. 生成描述文件,然后下载、导入 keychain
  3. 上 itunes connect ,创建 app 并填写相关信息
  4. xcode 里面去掉所有断点,然后点击菜单栏 Product -> Archive(灰色的话检查下是不是选了模拟器,应该选择真机或者 Generic iOS Device )
  5. Archive 完成后,选择右侧的 validate 验证包。
  6. 验证没问题,点击 Upload to App Store 即可开始上传。

上传完应用,应用信息也配置好后,点击 itunes connect 里面的 send for review 就开始进入审核队列了。

这过程中,因为不熟练,遇到了一个坑,卡了一天:

原因有两个:

  1. 开发者后台中 development 的推送为 Configurable ,相当于没开启,所以一直没收到。解决方法:手动开启。
  2. 网上找到的 pem 配置文章生成 pem 的方式都是先生成证书的 pem,然后生成私钥的 pem,最后合并在一起。而 ruby-china 用的是另一种方式。鉴别方式:看 sidekiq 后台的错误里面有没有 OpenSSL::PKey::RSAError: Neither PUB key nor PRIV key: nested asn1 error 。如果有,那基本上就是 pem 配置不正确导致和苹果推送服务器通讯失败了。解决方法:用上面正文里的那个命令生成 pem 内容即可。


↙↙↙阅读原文可查看相关链接,并与作者交流