由苹果的4种版本想到的

根据渠道(企业和苹果市场)和模式(DebugRelease)两个维度组合,可以有4种不同的版本组合。

1. AppStore渠道Debug模式

  • 这是最常用的模式,一般就是所谓的开发版

  • 用开发证书

  • 测试手机的UUID需要上传苹果网站

  • 可以用XCode连接测试机调试,设置断点等

  • 可以用iTools等工具在测试机上安装

  • 没有注册UUID的手机不能用

2. AppStore渠道Release模式

  • 这是通常所说的产线版本

  • 用发布证书

  • 不能用XCode调试,不能设置断点

  • 不过可以通过XCode安装。运行时会闪出来

  • 不能用iTools等工具在手机上安装

  • 只能从AppStore下载安装

3. 企业渠道Debug模式

  • 299美元/年的账号

  • 用开发证书

  • 测试手机的UUID需要上传苹果网站

  • 可以用XCode连接测试机调试,设置断点等

  • 可以用iTools等工具在测试机上安装

  • 没有注册UUID的手机不能用

  • 是企业版的“开发版”

  • 与普通的开发版bundle id不一样,相当于不同的应用。

  • 这个模式也是给开发人员用的

4. 企业渠道Release模式

  • 这是通常所说的“企业版”、“内测版”、“抢鲜版”

  • 用发布证书

  • 不能用XCode调试,不能设置断点

  • 不过可以通过XCode安装。运行时会闪出来

  • 能用iTools等工具在手机上安装,手机不需要注册UUID

  • 也可以放在企业内网,下载安装

  • 不能上传AppStore

关于友盟统计

  • 一开始,友盟统计的AppKey是跟bundle id相关的;这样的话,引入企业版就要申请新的AppKey

  • 估计企业版用于内测比较多,除了bundle id不一样,其他功能跟正式版都一样,那么把bundle id作为区分条件就不合适

  • 当前的友盟统计的AppKeybundle id无关;这样的话可以自己决定是否需要新建AppKey
    简单处理就不要新增了,跟正式版用同一个;
    如果要区分渠道:正式的还是内测的,那么就新建一个。

关于分享

  • 新浪微博分享,一个AppKey下面可以挂最多4bundle id,所以可以不新增。

  • 微信分享,一个AppKey可以挂2bundle id,另外一个的名字叫测试bundle id。看来是专门用来拿企业版当内测版的

  • QQ分享,有AppKeyAppID两个参数,不知道为什么这么设计。从网站介绍来看,AppID好像跟bundle id有关。经过实际试验,其实他的处理方式和友盟统计一样:AppIDbundle id无关

  • 小结:微博,QQ,微信这三个分享,都可以做到企业版和正式版用相同的AppKey,可以简单地把企业版当做“内测版”。
    当然,如果要精细化管理,区分数据来源,那么用不同的AppKey来做也是可以的。只是模式太多,版本太多,管理上面要多花点心思。

关于极光推送

这个没有办法,需要上传推送证书。所以AppKeybundle id是强相关的。这种相关是苹果的证书生成方式决定的,在可预期的未来也很难改变。
企业版和正式版,是完全不同的应用,虽然功能是完全一样的。

需要几个版本?

  1. 开发版:(AppStore Debug模式)开发和测试使用,测试负责维护服务器数据。开发可以用工具造数据,比如Charles;也可以在本地自己写测试数据,只是不要忘了到时候删除测试代码。建议的方式还是测试和开发合作,由测试提供核心案例数据,开发和测试标准统一。

  2. 内测版:(企业账号 Release模式)一般有两种用法:(1)测试维护,用来测试和内部验收。(2)运营维护,真正的内测版,服务器环境和正式版本一致,但是独立的服务器,和正式环境隔离。

  3. 审核版:(AppStore Release模式)这个版本专门给苹果审核用。服务器环境和正式版本一致,但是独立的服务器,并且只是1个或者2个测试账号,(用户数最好不要超过10个),注册,短信验证码之类的流程都不要产生。并且,面对审核,有些特殊的要求,比如IPv6服务器等等。同时,苹果审核通过之后,不能自动上架,要手动上架。服务器的开关切换放在后台,手动上架前要把服务器地址切换到正式的。

  4. 正式版:(AppStore Release模式)。这是“产线版”,基本上都是有的。

大前端趋势

  • JavaScript有一统江湖的迹象,iOS、Android开发都准备转JavaScript前端开发,至少思想上需要有这样的趋势。

  • facebookReact Native; 阿里的 weexGooglePWA,这些大公司都在跟苹果争夺开发者。iOS开发者地位下降,需求降低,薪资走低,苹果的影响力控制力降低,这些都是正在发生的事情。
    库克比乔布斯差的不是一点点,从iOS开发者的生存状态就可以看出来。

  • PC 前端:主要是浏览器的网站

  • H5 前端:微信小程序,支付宝生活号,微信公众号,App中的活动,也可以尝试一下 GooglePWA

  • App开发iOS、Android组件开发,这些还是原生的。facebookReact Native, 阿里的 weex选择一个。以前用H5写的活动页面,也可以用weex(或者React Native)来实现。

  • 网关开发:大前端里面的后台,后端系统的前端接口层。采用Node.js来做,也是JavaScript。这一层的价值是“大前端”和“大后端”之间的接口层。与后端,是纯的“数据接口”;这一层主要是负责对各端数据格式做适配(比如浏览器的换行是<br />,原生的换行是\n)。

建议的流程

改进点:一般都是后台系统准备好了,在提供数据给前端联调,导致前松后紧,为上线加班。现在将整个流程分为内部发布,内部试用,苹果审核,正式上线4个阶段,减少无意义的加班。

  1. 内部发布:在开发分支上开发新特性,develop,数据由“网关开发”提供。能接实际后台的就接上,比如用户系统。后台提供不了的,那么就由测试根据核心测试案例构造一些,直接以urlkeyvalue就是前端需要的json,直接放在“缓存数据库”中。保证各端都是可用的产品,没有本地写死的Demo数据。开发测试完成之后,就可以内部发布,将版本转移到发布分支。格式为alpha-年年月月日日。产品部门可以验收,试用,看看是否符合设计,完成后就可以进入下一个开发周期。一个周期建议4周(1周理解需求和方案设计,2周开发测试,1周和产品部分交流合作,并未下个研发周期做准备)。当然,采用2周的开发周期也是可以的,只是要求部门间配合要做好。

  2. 内部试用:这个要看后台的进度。那些由“网关开发”提供的临时json数据都接上真正的后台数据,再经过测试验证,就可以发布“内测版”。这个内测版最好使用企业版账号的Release模式。这个阶段主要是后台开发的实现以及“网关开发”接口的调整。前端方面,只要将某个合适的alpha-年年月月日日转以为beta-年年月月日日就可以了。当然,由于接上真正的后台,可能会导致前端的调整。并且这段时间也会发现新的bug,只需要直接在beta-年年月月日日这个分支上修改。至于修改是否同步到develop分支,要根据具体情况而定。
    “内部试用版”由于采用了企业版账号,就比较灵活,可以直接放在自己的网站上(需要支持https),让相关人员下载试用。这个版本的服务器独立,各方面和真实服务器一致,主要由运营负责。一些活动,一些推广的方案,可以内部先试用一下,看看效果,及时调整。试用的时间长短,是否正式推向市场,这里还有讨论和调整的机会。

  3. 苹果审核:经过内部试用,终于决定上线了。苹果审核与正式使用的场景还是有很大差异的。前端的代码是一样的,从某个beta-年年月月日日转到release-年年月月日日就可以了。服务器要单独提供一个,配置和正式的一样,不过要为审核做一些特殊处理。比如支持IPv6,提供测试账号,不能出现Android字样等等。为了满足苹果审核要求,可能会需要做一些修改,直接在release-年年月月日日分支上操作就可以了。至于是否将修改同步到develop分支,要根据具体情况而定。

  4. 正式上线:经过等待和必要的修改,苹果审核通过了。(1)运营或者运维登录自己的后台,将服务器从苹果审核服务器切换到正式服务器。如果用户量大,或者考虑稳定性,这里可以引入“灰度发布”,逐步放开用户量。(2)登录苹果开发者网站,手动上架产品。
    将上架产品对应release-年年月月日日,合并到master分支。如果由"灰度发布"机制,需要等用户全量放开才能合并。这段时间如果发现bug需要修改,直接在这个release-年年月月日日分支上操作。这里的修改是否合并到develop分支,需要根据具体情况而定。
    合并到master分支,意味着一个完整周期走完了。master分支和稳定的正式版本保持一致。

master分支和develop分支是必须的,不可删除,权限要特殊控制。alpha/beta/release-年年月月日日都属于中间辅助分支,保留一段时间后,比如半年,可以删除。当然,都留着也是好的,每个过程都有里程碑标志,方便追溯。

一开始,要错开步骤,需要一点启动时间,看起来要慢一点。完整运行起来之后,各个过程是完全独立的,并且各自负责的部门主体也不一样,是完全可以并行的,一点也不慢。

这里的本质是前端能够提供一个最小可用版本,按照自己的节奏发展,不需要干等后台数据。(依赖后台数据的后果:前面没法做,后面累成狗,加班上线后还要解线上bug,还有临时的需求变更.... )。

核心优势1:技术和产品合作,倒逼运营养成提前规划的习惯。反问:2周前提出,2周后就上线,这样匆忙能作出一个好的活动吗?风险能控制吗?阿里的双十一会这么做吗?

核心优势2:方便领导审批。一份word文档就让领导放成千上百的资金,压力大吗?如果领导能够看到可用的产品(alpha版本),是不是审批时可以简单点?

核心优势3:风险提前发现。推出给最终用户之前,先在公司内部试用一段时间(beta版),就算一周或者两三天也比没有强,是不是更能控制风险,对用户更加负责?这个是不是比光靠测试把控产品质量更靠谱一点?

核心优势4:更多试错的机会。运营策划一个活动之后,可以和产品和技术商量,大家觉得可行,就可以先开发出一个版本看看效果(alpha版),不需要等领导审批之后再动。有实际可用的产品,领导审批也更方便,也更容易过。(alpha版)不涉及后台开发,就算废掉,成本也不高。试错机会多了,出好产品的概率会高一点。

核心优势5:更快的迭代速度。不用等后台实现,迭代版本速度就可以加快。前端和产品可以更紧密合作,加快产品演进速度。到用户手里的版本,在公司内部可能已经更新了三四个版本了。至少不会出现“最近后台任务比较重,前端任务比较少,只能干等着的情况。”

组织架构

技术架构和流程,需要相应的组织架构来支持。组织架构,还是采用传统的分层模式,这个稳定,有归属感。而具体做事的时候,采用4~10人的小团队模式,这个灵活,以团队目标为主,防止个人英雄主义。

组织架构图.png
  • 产品一开始人少,可能就1~2个,可以先挂在技术下面。并且和客户端团队走得近,对以后的小团队模式有帮助。发展壮大之后,一般会独立成一个部门。形成产品,技术,运营的三角关系。

  • “Node.js网关”和“客户端数据服务”这两个是客户端和后端的接口,也是将两者分离的交接点,是两位负责人最需要关心的地方。一方面,统一出口,前后端隔离;另一方面,等用户量大起来之后,要注意单点风险。所以这两个模块,要定义需要做什么,更要定义不做什么。公共部分要做,具体实现尽量甩出去

  • CTO应该是纯管理,怎么和CEO配合好事首要问题。当然,技术方向也要把控。

  • 客户端负责人和后端负责人,一般是前后端的架构师兼任。属于重要的中层。以流程管理和架构技术为主,跟紧发展潮流,同时也应该花30%左右的时间做技术实践,保持熟练度。

  • 测试和运维属于公共服务,可以单独出来

  • iOSAndroid,面对的是两种手机客户端。可以先各找一个,当然也可以先发展一个,等稳定了再上另外一个。界面和交互,两个端也不需要强调一致。两种手机发展理念是不一样的。

  • H5,可以是App中的WebView页面,也可以是微信小程序,支付宝生活号等等。根据需要来吧。

  • Node.js是后台技术,但是放在客户端,主要为多端数据展示做数据适配等工作。也可以做一下公共逻辑,比如日志,加解密,统计,以及其他公共业务逻辑。和具体客户端无关的逻辑放在这里,只要实现一遍,各种端都能受益。另外,这个主动权掌控在自己手中,不受客户端是否升级影响,也不会受限制于苹果审核机制。更重要的是,客户端一般处理单页面单用户逻辑,而这里,则不受这两点限制,发挥空间很大。另外,这里虽然用后台的技术,但是要有客户端的思维,为客户端开发闭环做好服务。现在JavaScript发展势头很猛,在这里可以很好地发挥一下。

  • Node.js网关(数据消费者)和Java数据服务(数据生产者)之间,是纯粹的数据信息通信,不要考虑各种端的差异。比如时间戳,只要一个long数据就可以,不需要考虑是年月日还是时分秒等具体表现形式。这里基本不需要“文艺青年”的参与,纯粹是技术内部“鸟语”。

  • 至于是否要引入React Native,weex等,看需要吧。个人认为是不需要。现在苹果的审核已经很快了。把随心所欲升级当做需求是耍流氓。另外,多端一致,全栈工程师,少招几个开发之类的领导爱听的话,纯粹是损人利己的行为。
    当然,产品、运营一天到晚要搞活动,热更新,那确实需要H5,如果还要求体验,React Native,weex也是有一定价值的。面对流氓,也只能耍流氓了。
    真正的动态性,正在的提升效率,将公共逻辑移到Node.js网关才是正解。“云 + 轻客户端”才是让企业掌握主动的方式。

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

推荐阅读更多精彩内容