iOS TesterHome iOS 客户端上架历程

chenhengjie123 · 发布于 2016年12月07日 · 最后由 seveniruby 回复于 2016年12月30日 · 2038 次阅读
17413
本帖已被设为精华帖!

最近几天和 TesterHome 的小伙伴一起完成了 TesterHome iOS 客户端的上架。TesterHome 的网站是在 Ruby China 的基础上进行修改的,此次客户端也是从 Ruby China iOS 客户端基础上修改。因此此记录也适用于 Ruby China 的同学,乃至以后其他使用 homeland 的同学。

在此特别对 Ruby China 社区一直以来对 TesterHome 社区的支持表示感谢!

原材料

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

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

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

修改方法:

  • 创建 testerhome 第三方应用授权

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

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

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

  • 打开项目的 Constants.swift 文件

把 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 开发者后台生成推送证书

步骤基本和 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 中。

测试推送

在本机架设一个 homeland 网站,按照上面的步骤添加新的应用并配置到 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 就开始进入审核队列了。

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

  • 测试时无论是 adhoc 包还是调试包都收不到推送

原因有两个:

  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 内容即可。
共收到 5 条回复
15307

老婆是做测试的 经常会跑去TesterHome逛逛 赞一个!

2 huacnlee 将本帖设为了精华贴 12月08日 00:18
2556

我要去TesterHome捡老婆了

808

#4楼 @michael 赞一个。。测试妹子比例比较大一点。

96

#4楼 @michael 实话告诉你吧, 这社区技术氛围有点浓. 文章中代码密集度已经超越rubychina了. 所以男女比例...

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册