一款手机应用上线数月之后,企业主致电当初建设它的代理商,想要申请一次更新,却发现这家代理商已经停止营业、联系不上,或者要收费才肯让他们访问一样他们以为自己早已拥有的东西:这个App实际发布所在的账号。这并不是罕见的故事。手机应用不只是代码;它同时也是App Store和Google Play上的一个上架项目,归属在某个开发者账号之下,而谁控制这个账号,就决定了这个App能否更新、以谁的名义发布,以及它是否还能继续留在架上。本指南将说明这个账号该由谁持有、动工前该问清楚什么,以及如果账号已经落在了错的人手里该怎么办。
开发者账号实际控制的是什么
Apple Developer Program账号和Google Play开发者账号,和App的代码并不是同一件事。代码是在手机上运行的东西;账号则是这个App在各应用商店发布所依附的管理身份。谁拥有这个账号,就控制着:
- 已发布的上架信息本身。App在商店里的页面,包括显示给任何查看者的开发者或发行者名称。
- 日后的每一次更新。新版本、问题修复和安全补丁,都只能通过App所绑定的那个账号提交。
- 商店的各种通知。来自Apple或Google的政策警告、强制要求的更改,以及账号层面的通知,会发给持有账号的人,而不会自动发给名义上拥有这个App的企业。
- 下架或暂停App的决定。只有账号持有者能够下架这个App,或者在商店这样做时承担相应责任。
这些都和“谁拥有源代码”是不同的问题。那是另一个同样重要的问题,在谁拥有您的定制业务系统的源代码中有讨论。一家企业可以完全拥有自己的代码,却仍然无法更新自己的App,只要这个App发布所依附的账号属于别人。
账号由代理商持有而不是由您持有的风险
花钱请代理商来构建并发布手机应用是很正常的做法。风险具体在于这个App是发布在谁的账号之下。如果这个账号属于代理商而不是企业本身,那么这家企业实际上就成了自己App上的一个访客。

如果与这家代理商的合作关系破裂、对方失联,或者情况发生变化,实际上会发生什么:
- 企业内没有人能推送更新。一个问题修复、一个必须打的安全补丁,或一次季节性调整,都要等着一个可能已经不再回应的人。
- 企业无法回应应用商店的政策问题。如果Apple或Google标记了需要回应的事项,账号持有人才是被询问、也必须采取行动的那一方。
- App可能从商店里消失。如果代理商的账号被关闭、被暂停,或者干脆不再续费,这个账号下的每一个App,包括您的App,都会一并下架。
- 上架信息中的发行者名称可能不是企业自己的名字。查看是谁发布了这个App的客户,看到的是代理商的名字,而不是企业的名字。
以上这些都不需要恶意才会发生。悄悄关闭、被收购,或单纯忘了交接账号的代理商,造成的后果和故意扣着账号不放的代理商是一样的。实际的教训是一样的:这件事应该在开发开始之前就解决,而不是等到App已经上线、出了问题之后。
账号所有权和协作者权限是两件不同的事
有用的区分在于:谁拥有这个账号,和谁被允许在账号里操作,是两件不同的事。Apple和Google都允许账号拥有者把其他人加进来,赋予与他们实际要做的工作相匹配的角色,而无需把账号本身的所有权交出去。
| 账号拥有者 | 开发者或管理员角色(由拥有者添加) | |
|---|---|---|
| 能否提交App更新 | 能 | 如获授权,则能 |
| 能否更改谁有访问权 | 能 | 只有获得管理员级权限才能 |
| 是否收到商店政策通知 | 是,始终如此 | 默认不会 |
| 能否关闭或转移账号 | 能 | 不能 |
| 发行者显示的是谁的名字 | 账号拥有者的名字 | 不会显示为发行者 |
| 此人离开项目后会怎样 | 没有任何影响——企业仍完全掌控一切 | 其权限直接被移除;App不受影响 |
这才是真正能保护企业的安排:账号以企业自己的名义注册,而无论是代理商、自由职业者还是内部开发人员,负责构建App的一方,都以协作者身份加入,获得这份工作所需的确切权限。如果您还在考虑这三者之中该由谁来构建App,聘请自由职业者、内部开发人员,还是开发公司讨论了这个决定;本指南假定这个选择已经做出,专注于随之而来的账号问题。
手机应用开发开始前应该问清楚什么
这件事应该在确定价格和范围的同一阶段解决,而不是等到App已经提交到商店之后。
- 问清楚App将发布在谁的账号下。答案应该是您企业自己的Apple Developer Program账号和Google Play开发者账号,以您企业的名义注册。
- 如果账号还不存在,请自行注册,或由您的企业去注册。每个应用商店的注册流程都是设计给账号持有人自己完成的;开发人员可以指导您完成,但注册本身应该由您的企业进行。
- 确认您本人持有该账号自己的登录信息,或至少拥有管理员角色。管理员角色让您能管理还有谁拥有访问权,这在目前的开发合作关系日后需要变动时很重要。
- 把开发人员加为具有适当权限范围的协作者,而不是把账号本身的登录凭据交出去。这是两个应用商店都预期的账号共享方式。
- 把账号安排以书面形式确认下来,和通常的范围与价格条款放在一起,这样日后如果合作关系有变,就没有模糊之处需要去理清。
- 问清楚如果合作关系结束,上架信息会怎样处理。现在就有书面的答案,远比等到有了争议才拿到口头保证更有价值。
这些要求都不算不寻常,有经验的开发人员应该预料到这个问题。在签约之前进行这样一次较小、较平静的对话,总好过等到App从商店里消失之后。
如果您的App已经在别人的账号下运行
这种情况是可以补救的,但比一开始就做对要慢、也更没有把握,所以即使目前还没出事,也值得把它纠正过来。
- 两个账号都需要处于活跃且状态良好。转移是把一个App从一个开发者账号移到另一个,而移动的两端都需要处于正常状态。
- 当前持有者必须配合。转移不是企业能够单方面强行完成的事;它需要目前持有这个App的账号同意并采取行动。
- 评分和评论通常会一并转移;部分报表和数据则不会。评分和评论一般会随App转移,但像历史收益或使用报表这类内容,往往绑定在生成它们的那个账号上,而不是App本身,所以转移前请先备份能备份的内容。
- 要预留一段审核期,而不是立即切换。每个应用商店在完成转移之前都会先进行审核,这会增加时间,企业应该为此做好规划,而不是被打个措手不及。
如果与目前持有账号的一方关系还算能谈,最简单的做法就是现在就以书面方式提出转移请求,而不是等到被某个事件逼着不得不问。前文“该问清楚什么”的建议,事后补做同样适用,就像开发之前做一样有效。
为什么这个问题专属于手机应用
这整个风险,是应用商店运作方式的一个特征,而不是定制软件普遍存在的问题。Web应用,也就是在浏览器里运行、而不是从商店安装的那种,根本没有开发者账号需要操心:它存在于企业已经掌控的域名和主机账号上,和任何网站一样。访问它完全不依赖Apple或Google。Web应用与手机应用:您的企业到底需要哪一种讨论了这个更大的决策,如果手机应用的账号复杂性本身就是让人质疑手机应用是否是正确选择的理由,这篇文章值得重新看一看。对于还没决定是否需要手机应用的企业,是时候在现有Web应用上增加手机应用的信号说明了这一步什么时候才真正值得。
手机应用会带来这个要求,是因为应用商店本身的设计,就是围绕着每个App只有一个负责方,用于安全审核、政策执行和账单管理。这个设计选择对Apple和Google来说是合理的;它只是意味着委托构建这个App的企业,比起建一个网站或Web应用,多了一件要自己掌管的事,也多了一件值得在与开发人员的第一次对话中就确认清楚的事。
一个简短的场景
一家连锁咖啡馆请代理商为iOS和Android构建一款会员积分App。代理商给出了合理的报价,按时交付,App运行良好。十八个月后,这家咖啡馆想增加一项新功能,向代理商询价。代理商已经转去做其他项目,回复很慢。咖啡馆的老板尝试另找开发人员来做这项改动——却发现这个App发布在原代理商自己的Apple和Google账号之下,而不是咖啡馆自己的账号。企业里没有人能提交更新、回应商店通知,甚至连确认目前谁还有访问权都做不到。代码本身或许仍然完全可用;真正的障碍是它所依附的那个账号。
如果当初的合同只是简单地把咖啡馆自己的开发者账号指定为发布账号,再把代理商加为协作者,那么十八个月后的这同一次改动,就只会是和任何愿意接手这份工作的开发人员之间一次正常的对话,而不是去寻找一个还握着登录信息的人。
这需要花多少钱
每个应用商店都会向账号持有人收取各自的注册费,用来开通开发者账号,这完全独立于开发人员构建App所收取的费用。这些费用由企业直接支付给Apple或Google,不包含在开发报价之内。马来西亚定制手机应用要多少钱更详细地讨论了这部分费用的划分,以及推动开发工作本身成本的各项因素。Gotka的应用与系统开发服务建设手机应用的参考起价为RM15,000,范围明确后以书面报价为准;应用商店的注册费用在这份报价之外,属于企业自己的开支,无论由谁来构建这个App都是如此。
常见错误
- 从未问过App会发布在谁的账号下。对这个问题保持沉默,通常意味着默认会用开发人员自己的账号。
- 以为拥有代码就等于拥有这个上架项目。两者分别受不同的事物管辖;两者都要确认。
- 交出完整的账号登录凭据,而不是添加协作者角色。这会颠倒谁真正控制这个账号。
- 把账号所有权当作可以留到以后再解决的细节。一开始就设置正确,远比闹翻之后再去理清容易得多。
- 以为万一出事,转移可以立刻完成。它需要对方配合,还需要一段审核期,所以这是一个补救选项,不是可以依赖的安全网。
- 没有把这个安排写成书面文件。关于谁控制账号的口头理解,到了几个月后根本没法拿来当依据。
Gotka Technologies 在其中的角色
Gotka的应用与系统开发服务建设Web应用、业务系统和手机应用,手机应用的参考起价为RM15,000,范围明确后以书面报价为准。在手机应用的建设中,这包括将App发布在以客户企业自己名义注册的开发者账号下,Gotka作为协作者加入来完成这项工作,而不是自己持有这个账号——这正是本指南建议向任何开发人员提出的安排。依赖后端的手机应用,也需要一个可靠的地方来运行这个后端,这正是Gotka云主机的用武之地。
本指南中使用的关键术语
- 开发者账号:App在Apple或Google之下发布所依附的管理账号,与App自身的代码是分开的。
- Apple Developer Program:在App Store发布App所需的付费账号。
- Google Play开发者账号:在Google Play为Android发布App所需的账号。
- 账号拥有者:开发者账号以其名义注册、对该账号拥有完全控制权的一方。
- 协作者角色:例如开发者或管理员这类有限范围的访问权限,让某人能在账号内工作而不拥有它。
- 发行者名称:在App商店上架信息中公开显示的开发者或公司名称。
- App转移:把一个App的上架信息从一个开发者账号移动到另一个开发者账号的过程。
我App的Apple和Google开发者账号该由谁拥有?
两个账号都应该由您的企业拥有,以企业自己的名义注册,而不是代理商的名义。负责开发的一方可以被加为开发者或管理员,获得所需的权限,但账号本身,以及由此决定的已发布应用列表,应该掌握在之后会持续运营这个App的企业手中。
如果开发者账号由我的代理商而不是我的企业拥有,会怎样?
App是以他们的名义发布的,如果合作关系结束,您可能无法更新App、无法回应应用商店的政策问题,甚至无法继续保留这个上架状态,直到账号被交还为止。账号之间的转移是可行的,但需要时间,也需要目前持有账号的一方配合,所以最好一开始就避免,而不是指望事后补救。
代理商能在不拥有账号的情况下帮我构建并发布App吗?
可以。Apple和Google都允许账号拥有者把其他人加为协作者,赋予开发者或管理员等角色,这样代理商就能构建、测试和提交更新,而不需要持有账号本身。这是在把开发工作交给开发者去做的同时,仍把控制权留在企业手中的正常做法。
关于开发者账号,我应该在合同里要求什么?
要求App从第一天起就发布在以您企业名义注册的开发者账号下,确认您本人持有该账号的登录权限,或至少拥有管理员角色,并以书面形式明确如果合作关系结束,账号和上架状态会如何处理。这件事应该在开发开始前解决,而不是等App已经上线之后。
如果一开始没这样设置,开发者账号之后还能转移到我的企业名下吗?
通常可以,但比一开始就做对要慢、也更没有把握:目前的账号和新账号都需要处于活跃状态,交出账号的一方需要配合,审核也可能需要一些时间。评分和评论通常会一并转移;部分报表数据则不会。从一开始就用对账号,可以完全避开这个过程。
我的企业拥有自己的开发者账号,需要付费吗?
每个应用商店都会向账号持有人收取各自的注册费,用来开通开发者账号,这与开发者构建App所收取的费用完全分开。Gotka的应用与系统开发服务建设手机应用的参考起价为RM15,000,以书面报价确认,应用商店的注册费由企业直接支付给Apple或Google,不包含在那份报价之内。


