这一周,一直在和审核人员拉扯,解决审核问题,过程十分痛苦,不过都有好的结果,最后都上线了。
1. Shopify App
上周开发了一个关于利润分析的 Shopify App,这个 App 是我开发的第一个非嵌入式 App。
关于嵌入式和非嵌入式 App 的区别,可以简单地理解为,嵌入式 App 就是商家安装你的 App 后,可以直接在他的店铺管理后台打开,相当于你的 App 是嵌入到管理后台的。

那么非嵌入式App,就是商家安装你的 App 后,跳转到的是你自己的 SaaS 后台。因为是跳转到自己的后台网页,所以这里比嵌入式多了一步服务端鉴权登录的操作。
所以我的 App 一开始提交后,这里就出问题了,不知道审核员的环境哪里有问题,死活登录不上,给我打回来好几次了,但是我本地测试都可以正常鉴权登录。

打回来的原因很简单,就是他那里登录不上导致后面的流程都卡住了。
来回折腾好几次之后,我决定改方案了。
因为这里有一个风险点,如果因为同一个问题来回修改好几次后都没有解决的话,会触发 Shopify 的政策,Shopify 会禁止你在一定的周期内提交 App,轻一点的可能是一周,严重一点可能是一个月。
所以我决定将 App 改成嵌入式的,这样就可以免去服务端的这个登录鉴权流程,直接走 App Bridge 的鉴权方案。
这只是一个临时方案,因为Shopify App 第一次上架的时候审核比较严格,后面再更新基本不会审核了,所以后面等他 App 审核通过后我还是要改回来的。
改完之后继续提交,又被打回来了。。。

说我申请了不该申请的scopes,write_customer_payment_methods 和 write_own_subscription_contracts。如果项目中使用到了,就需要提供使用的证据给他们。
我去shopify.toml 中查看了一下,没有申请这两个啊。

突然想起来,Shopify 的这个scope 管理真的是稀烂,不仅在配置文件中管理一部分,还在 Partner 后台管理了另一部分和客户信息相关的比较隐私的权限。

确实我这里之前手贱申请了这个 Access subscriptions APIs 这个权限。这里申请了之后看不到他具体是什么权限,我们看一个还没申请这个权限的 App 这里长什么样。

果然这里就是管理这两个 scope 的地方,坑爹啊。
但是我这里已经申请了,发现后台没有地方撤回,但是我又确实没有用到,没办法给他们提供证据。
我又去认真地读了一下他们的邮件,发现他们在最后加了一句:

没错,If the app does not utilize this field, authorize us to remove it on your behalf. 意思是,如果 App 确实没有用到这两个 scopes,可以回复他们授权他们来帮我删除。。。
我不知道 Shopify 为什么非要把简单的流程复杂化,你说你搞这么复杂干啥,你在后台给我提供一个删除按钮不就可以了?非得我给你回个邮件告诉你,你可以帮我删除了,然后你就去帮我删除。
把这个邮件回复之后,App 终于是过审了,接下来准备把他改成之前的非嵌入式的。
总结一下 Shopify App 提审的几点想法:
非嵌入 App 审核流程比较麻烦,出问题的地方比较多,可以先嵌入式 App 上线,后期再改成非嵌入式
第一次 App 上架时尽量只上线核心功能,测试流程不要复杂,越复杂 bug 出现几率越大,被打回来的概率就越高。先上架,再迭代,因为迭代时不需要审核。
项目中没有用到的权限不要申请,否则大概率被打回。
2. iOS App
之前说过,会做一个新的iOS App,涉及到照片识别,AI 生图的相关功能。这周终于是把这个 App 也上到 App Store 上去了。
这个 App 是我给我家宝宝写的一个宝宝专属相册管理的 App。
不过这个 App 上架过程中也挺折腾的,首先是备案过程中,因为名称和描述里面都包含了“AI”,阿里的负责备案的人打电话过来和我沟通,说如果涉及到 AI ,就需要提供一些调用第三方 AI 相关的协议。算了,我直接把 AI 关键词去掉了。
然后开发完提审后,被 Apple 拒绝了,给我列了一堆问题。


简单总结一下这 4 个问题就是:
Apple 认为应用名
Baby Timeline - Growth Album里有Baby,会让人理解成“这是专门给儿童使用的 App”,但提交时并没有按Made for Kids/Kids category去报。Apple 不接受当前的相册权限前置弹窗设计。在系统权限弹窗出现之前,我先弹了一个自定义说明框,说明了申请这个权限的目的,这个说明框里用户可以点
Not now关闭,Apple 不接受这种关闭绕过权限的做法。权限请求文案语言,和 App 本身本地化语言不一致。
Apple 怀疑我的 App 把用户个人数据发给了第三方 AI 服务,但是没有明确告诉用户会发送什么数据,明确告诉用户发给谁,在发送前征得用户同意,在隐私政策里写清楚收集、用途、共享对象
针对这 4 个问题,我逐一做了修改或回应。
第一个问题,我不知道为什么不能有 baby,我之前上线的 App 里面也有这个单词,但是之前没有提出来这个问题,可能跟审核员的心情有关系吧,无奈只能改名,把 baby 去掉。不过我的中文名称里面还是有“宝宝”,我没有修改中文名,因为中文名已经备案了,改的话 Apple 里面就会提示和备案的名称不同。
第二个问题,既然你不要我加 Not now,那就去掉就好了。
第三个问题,确实是我的问题,权限申请文案忘记做多语言了。
第四个问题,其实我在发送数据之前给用户弹窗提示了,只不过这个只要用户同意了就不会再出现了,可能是审核员第一次没有留意到,后面也不出现了所以他觉得有问题。另外我的隐私政策里面也都写的明明白白,所以这个问题我就直接没改,跟审核员硬刚,让他重新测试和查看对应的地方,只不过没有提供截图。
第二天,审核回复了,还是给我打回来了,说我的第 4 个问题没改。我就给他们录了个视频,告诉他们我的弹窗怎么弹的,以及隐私政策在哪里写的这些内容。
第三天,审核通过了。。。
总结一下个人开发者 iOS App 提审的几点想法:
如果想快速备案通过,不要在备案 App 名称或描述里出现 AI 关键词
Apple 提审的时候尽量规避敏感关键词,特别是涉及到特殊人群的,比如小孩、宝宝、人脸识别等等都是非常敏感的词
尽量不要提供绕过申请系统权限的交互
如果你认为审核员回复的问题在你的 App 中不存在,提供对应的截屏或录屏并加以说明让他们重新测试,只要不违反 Apple 的规则,一般都没问题。
以上,就是本篇文章所有内容,欢迎点个赞、推荐、转发三连,也欢迎关注我,一个普通的创业者。
特别推荐
1. 三个系列文章
系统地记录了我的创业周报,以及在Shopify App开发过程中的一些知识点,欢迎大家查看。
2. Shopify 开发交流社群
目前国内Shopify开发资料稀缺,基本没有交流社区,所以我创建了一个专注讨论Shopify开发相关的各种技术问题的交流圈子。在这里你可以获得:
• 学习Shopify App开发从入门到上架的流程。 • 学习 Shopify 主题开发。 • 和其他Shopify开发者咨询开发遇到的问题,交流经验。 • 和大家一起交流副业、创业的经验和心得。 • 星主会不定期分享Shopify开发&建站、web开发、移动端开发相关的私活,有需要的同学可以接。
欢迎你来加入,我们知识星球见 🤝

夜雨聆风