iOS从开发到上架实践-2019

账号申请

  • 要开发iOS App,首先要有账号,账号分三种:
  1. 个人版
  2. App Store 版
  3. 企业版

上面三种是通俗的叫法。我们选择2. App Store 版。以前3. 企业版,还可以用来内部测试,内部试用,不过现在已经不合适。

  • 申请账号需要用到邓白氏编码,简单理解,就相当于企业的身份证,是在国外的。这个其实是免费的,不过网上有很多提供类似服务的收费公司。

  • 这个过程一般需要20多天,甚至更长。并且如果过程出现问题,苹果是通过邮件沟通的,效率很低,等待浪费的时间很多。

应用申请

  • 首先要确定应用的名字和Bundle Id。这里要注意的是这两个都必须要有唯一性,不能和现有重复。比如,“支付宝”这个名字已经被用掉了,应用的名字就不能取这个。

  • Bundle Id一般是com.company.product格式,相当于安卓的包名,也要确保唯一。

  • Bundle Id和应用的名字确定之后,就可以用账号密码登录苹果开发者网站,注册应用,同时生成必要的证书。一般只要Bundle Id和应用的名字不和现有的重名,都能成功。

关于证书

  • 证书主要是开发者用,和普通用户没什么关系。

  • 分为开发证书,和发布证书两类;分别对应开发版(Debug)和发布版(Release)

  • 一些特殊的功能,比如推送,需要额外的证书,也分为开发证书和发布证书两种。实际使用中,推送证书只要一种发布证书就可以了,开发版(Debug)和发布版(Release)都可以用。

  • 当前版本XCode会自动管理证书,只要工程配置正确,使用的时候一般不会有什么大问题。

测试设备

  • 测试设备需要先到苹果开发者网站注册才能用。

  • 注册的方式有两种,一种是提供手机的UUID,可以通过iTunes,iTools等方法查看。一般是一个32位的字符串。然后登陆苹果开发者网站,进行注册。

  • 另外一种方式是通过XCode自动注册,非常方便。一般都可以采用这种方式。

  • 测试设备的总量不能超过100台,并且只能增加,不能删除。所以,对于测试设备的添加需要进行一定的管理和控制。当然,每年账号续费的时候,有一次清空注册设备的机会,要谨慎使用。

开发过程

  • 整个移动开发,可以看成一个“一云多端”的模式。业务逻辑和数据在我们的后台系统中。iOSAndroid等终端,是后台和用户交互的媒介。

  • 对于移动开发者来说,后台数据和界面资源是两大制约条件。用户手机上展示的数据,在后台,所以,当需求确定之后,前后端之间约定数据接口,并形成相关文档,就是非常重要的一件事情。我们现在使用的swagger-ui就是一种网页式的接口文档,非常方便,比以前的word文档要好很多。

  • 移动开发依赖的界面资源,由我们的UI同学提供;界面的布局,组件的尺寸,一些按钮的图片等等,都需要UI同学先确定。(尺寸标注,包括颜色值等;图片资源,iOS要提供2倍图,3倍图两套。)

  • 当然,需求文档和交互文档,是开发测试等都需要的,一般由产品或者交互提供。主要内容是:需要实现怎么样的功能,页面跳转逻辑,异常如何处理等等。

兼容性

  • 第一个兼容性是设备类型兼容。是只支持iPhone,还是iPhoneiPad都能用?iPhoneiPad公用一套界面,还是分开用两套界面?

我们现在的做法就是默认的做法:iPhoneiPad都能用,只有一套界面,在iPad上展示的时候,会有一个手机的轮廓。

  • 第二个兼容性是手机的类型,比如iPhone6, iPhone7, iPhoneX等硬件设备。这个主要影响的屏幕尺寸和图片资源的分辨率。iOS要提供2倍图,3倍图两套资源,就是因为不能设备的分辨率不一样。

  • 第三个兼容性是手机的软件版本。就是常说的iOS10,iOS11,iOS12等等。按照苹果的期望,iOS的最低支持版本越高越好。XCode的默认设置都是当前版本。这是一种值得推荐的做法,可以有效防止版本的碎片化。为了达到这个目标,苹果还做了“静默升级”,也就是当iPhone在电量充足,比如充电的时候,并且有WiFi的情况下,会自动将iPhone升级到最新的版本。

关于测试

  • 最方便的是开发版测试,将测试机通过XCode安装一下就可以了。当然,测试机要注册(XCode自动完成),也在100台范围之内。

  • 第二种是Ad-hoc测试。这种适用于开发和测试是异地的情况。当然,一些特殊情况,比如这次的推送测试,也用到了。主要原因是推送后台连生产环境的时候,要求iOS客户端是release版本。Ad-hoc测试是release版本;开发版是Debug版本。
    Ad-hoc测试的手机也是注册,也在100台范围之内。
    Ad-hoc版本不能直接通过XCode安装。需要先用XCode打包,导出Ad-Hoc选项的iPa包(相当于与Androidapk),然后通过其他工具,比如(iTools)进行安装。
    当然,Ad-hoc测试也可以做个下载页面,给个二维码扫描安装,不过这就需要前端同学介入做下载页面了,稍微有点麻烦。

  • 第三种是Test Flight测试。这是目前苹果推荐的测试方式。开发通过XCode将测试包上传苹果服务器;使用者通过扫描就可以安装使用,非常方便。
    Test Flight上的包是release版本的;
    通过Test Flight安装的手机不需要提供UUID,没有100台范围限制;
    Test Flight需要通过苹果审核,这是非常麻烦的地方;
    用户需要先安装Test Flight应用,才能扫码下载安装,有一点点不方便。

应用发布

APP开发完成,测试好了,接下来就是要发布了。

  • 首先,要上苹果发布网站(iTunes Connet)创建应用。
image.png

在苹果开发者网站创建的Bundle Id和应用的名称,在这里都要用到。不需要手填,只要选择就可以了。

  • 其次,通过Xcode打包,导出App StoreiPa包;这个包是用来在苹果的App Store发布用的,和Ad-hoc测试包有本质区别。

  • 然后,将iPa包上传到苹果后台,可以用Xcode直接上传,也可以用工具Application Loader上传。

苹果审核

这是整个过程中最麻烦的地方,也是被吐槽最多的地方,也是苹果特色的地方。

  • 需要登录苹果的发布网站,也就是iTunes Connect,填写一些资料。比如应用的简介,描述,支持网站,应用分类,测试账号等等。内容比较多,一般由产品来写。还需要提供屏幕截图,短视频也支持。

  • 资料完整之后,就是提交审核,进入排队过程。一般来说,第一版等的时间比较长,以后的升级过程会快一点。

  • 如果审核有问题,会被拒绝,相关问题可以在苹果网站上看到,同时也会发邮件通知。所以,提交审核之后,要经常上苹果网站查看状态,并且留意苹果账号邮箱是否接到苹果的问题邮件。

  • 一般情况,这个过程一周左右。当然,快的两三天就通过审核,顺利上线的也有,只是这样的例子并不多。如果遇到问题,通过邮件沟通,按照要求改,一来一去,第一版十天半个月上不去也是常有的事。

常见的问题

这里只是列出几种情况,被拒的原因五花八门,真的需要耐着性子,好好的与苹果进行邮件沟通才能过。

  • 如果iPad也能用,还要提供iPad上的截图,虽然有个手机外形。所以,没有必要,还是省事点好,直接只支持iPhone就好了。

  • 截图上有的功能,但是苹果审核人员看不到,那么就会被拒。功能和截图不符,肯定过不了。所以,截屏,只要提供几张常见的图片就可以了,比如启动页,首页,个人信息页等。千万不要贴那种不容易出现的页面,比如摇一摇的隐藏页面,地理位置变换页面等特定条件才能出现的页面。

  • 提供的测试账号,一定要有效,并且,最好有数据。比如,账单页面,如果这个账号是新的,没有交易记录,是空页面,苹果审核人员就可能认为这是个空页面,认为功能不全而拒绝。

  • 一些特殊领域页面要注意,比如银行理财,苹果就会要求提供金融资质证明文件,不然就不给过。

  • 屏幕出现的按钮都要能点。如果有三个按钮,只有一个按钮可点,另外两个,点一下,提示“功能升级中...”之类,也是会被拒的。苹果认为这是demo版,不可用。所以,这种情况,干脆只放一个可点的按钮,还没开发好的模块按钮不可见,反而能过。

  • 广告id,这是一个比较热门的话题。有些早期的第三方库,采用 广告id来做手机的唯一标识符,但是应用中并没有出现广告,也是会被拒的。理由是:苹果后台扫描出了广告id,但是没有看到广告,拒绝。

  • iPv6,这也是曾经很折磨人的一个地方。中国的网络运营商整体都是不支持iPv6的,但是苹果却要求我们的应用支持iPv6,真是没天理啊。所以,审核那几天,要保持iPv6能通;如果实在不行,那么就拍个视频,本地搭一个iPv6,证明能用,并且把视频放到美国能访问到的某个网站上,并提供相关链接,让审核人员能方便看到。

环境切换

这个和苹果没有关系,是我们的后台部署在不同的服务器上,域名不同而导致的。
为了方便更换域名,提供了一个的操作页面。这个页面一般不容易进,并且还需要密码,一般是给内部测试人员用的。比如连续点关于图标5次,并且在弹出的对话框中输入正确的密码才能进。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,402评论 6 499
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,377评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,483评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,165评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,176评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,146评论 1 297
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,032评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,896评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,311评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,536评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,696评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,413评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,008评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,659评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,815评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,698评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,592评论 2 353

推荐阅读更多精彩内容