AppStore审核被拒原因及解决办法

作者: 小唐羽锋 | 来源:发表于2017-09-18 16:46 被阅读181次

    日前苹果开发者官网发布了中文版的AppStore审核指南,还罗列出了一些常见被拒情况,这无疑方便了我们这些天朝程序员,毕竟最近我就是提交了一款应用被拒了数次。当然审核指南里面也只是大概叙述了一些被拒原因,并没有将具体的解决方案提供出来,你也可以提供联系方式,苹果方面会让一位精通中文的客服联系你,协助你解决问题。其实,还是自己了解原因,及时解决的好。下面我就将自己实际开发中提交审核被拒的原因以及网上搜集的被拒原因罗列出来,并附上具体的解决办法。


    1.应用中包括应用内购支付内容,审核被拒

    被拒原因截图

    这个内容核心在于苹果方面认为这款应用是有损苹果利益分成的,并且没有找到公开的账号注册的入口,和微信打赏功能一样,苹果认为他的利益受到了损害.
    换言之,苹果在应用内购方面条款写的比较露骨:苹果公司仅能通过内购这一种形式获得收益。所以特别介意这种没有注册功能的应用,它担心贵公司通过其他途径出售账号,然后登录iOS应用内使用功能。
    如果贵公司的应用并不属于上述范畴,或者注册功能隐藏较深。可以通过文字说明使用步骤,并在审核时,添加附件视频操作教程。把这些内容填写在App审核信息右侧的备注区域(就是写演示账户密码那块的右边备注:“对审核过程会有所帮助的、有关您 App 的额外信息, 包括在测试中需要的 App 特别设置等。”)里面提交就好。
    如果提交的应用属于上述范畴,可能需要和产品经理好好沟通一下了。

    2.允许使用App的用户生成自定义内容,却没有适当的预防措施。

    被拒原因截图

    被这个原因拒绝,大多是因为你的App中包含了类似微信朋友圈的功能,用户可以自定义发布文字信息和图片,却没有任何防范措施。

    解决办法:

    1.必须要有完整并且详细的用户许可协议(EULA),你可以把协议内容放到用户注册登录的首界面,用户不同意就无法使用该App,协议内容可以参考和你分类相同的其它应用。
    2.为应用增加投诉举报和拉黑功能。
    总而言之,在用户可以自定义发布内容之前,你可以考虑弹框提醒用户必须要遵守用户协议,否则无法发布任何内容。我之前因为这个原因审核被拒后,收到了苹果客服的电话,明确告知我,每个展示自定义内容的条目,都必须有一个举报按钮,App还必须有拉黑模块,类似黑名单功能。当然,你把举报和拉黑放到一起也是可以的,但是在审核的备注信息,必须详细解释。
     重要的事情说三遍,其实我的举报和拉黑功能,只是装装样子,装装样子,装装样子
    
    点击按钮,出现的举报和拉黑界面

    3.登录方式比较单一,自身没有完整的注册登录流程系统,例如只提供微信授权登录,登录必须要依赖于其它第三方App

    被拒原因截图

    苹果方面认为你的应用门槛过高,用户需要安装其它第三方应用才能登录你的App,虽然在天朝几乎人人手机都有微信和QQ,但是审核人员都是在美国,不保证他们的设备装有微信和QQ,还有个坑就是即使你在Xcode设置了Devices只包含iPhone,但是他们还是会用iPad安装测试你的App。

    解决办法 :

    1.老生常谈的办法就是,判断设备是否安装有微信或QQ,如果没有,就隐藏微信登录或QQ登录的按钮,这个方法大概16年的时候还可以通过审核,但是我在网上搜集资料,说是该办法已经无法通过审核。
    2.第二个办法是我亲自试过的,最近也通过了审核,我们的产品设计甚至只有微信登录一种方式(产品还死犟绝对可以通过审核,结果审核被拒,啪啪打脸,有些人坑,坑的让你无fuck说)。这个办法就是,如果你的线上版本,必须只有微信登录这一种方式的时候,但是审核的时候你需要给审核人员提供一个游客登录的方式,让你的接口同事帮帮你吧,写一个简单的接口,根据接口的返回值是否显示游客登录的按钮,线上不显示,审核显示.

    4.应用中包含应用更新功能被拒

    被拒原因截图

    这个被拒原因现在基本上很少见了,现在AppStore的所有热门应用,都有提示用户更新的功能,像牛逼的12306App,你不更新,就用不了,别说你不坐火车和高铁。如果因为这个原因被拒,只能说明你的提醒太频繁了,让审核人员觉得如果用户不更新新版本,就会一直重复提示,这和强制更新没什么区别。尽量让用户进入首界面后再提示有新版本更新,还有如果你的提示更新功能不是根据后台接口返回值判断的,而是根据本地对比AppStore信息,那么希望你用下面的代码去判断.

    NSDictionary *infoDict = [NSBundle mainBundle].infoDictionary;
    NSString *app_Version = [infoDict objectForKey:@"CFBundleShortVersionString"];
    

    5.采集设备IDFA但应用没有广告功能

    审核必经之路

    用户在提交应用审核的时候,都有一个选项让你选择是否包含广告标识符,这个选项我一般都选择是,一般情况下,如果你的App中集成了友盟或者ShareSDK之类的第三方SDK,一般选择“是”是绝对没有问题的,当前友盟的SDK也分为包含IDFA版的和不包含IDFA版本的,这个是你在集成前需要考虑的,友盟的官方文档写的也非常详细。网上搜索检查应用中是否采集IDFA的教程一大堆,自己去查查吧.

    6.应用在iPad上不能正常显示或运行

    因为iPhone和iPad都是iOS系统,所以它们都可以在AppStore下载应用。就算你在编译器设置了只支持iPhone,但是iPad同样可以安装你的应用,这就带来了一个坑,你必须也要适配iPad的机型界面,否则导致部分界面不能正常显示或者显示不全,你的应用就会被拒绝,经常会在被拒绝的附件截图里面看到iPad的截图,所以在界面适配的时候注意这一点,纯代码或者故事板都要做好。

    7. 你的App中引入或推荐了一些不属于你们自身的应用信息,原文如下:

    Apps may display and recommend apps other than your own only if the collection is designed for a specific approved need (e.g. health management, aviation, accessibility, etc.) or provides significant added value for a specific group of customers, or they will be rejected

    这个被拒原因是因为你提交的App中,包含了一些其它应用信息,这些应用不属于你们,这就需要在相关页面加入授权协议。防止侵权或被投诉,这些都是授权协议里需要提到的。最好还是不要出现或推荐其它应用,除特殊情况,苹果明令禁止应用内推荐其他APP。

    8.在档案和安卓市场涉及到了android平台,这是苹果不允许的。原文如下:

    In addition, we noticed that your app contains irrelevant platform information in 档案 and 安卓市场. Referencing third-party platforms in your app or its metadata is not appropriate on the App Store.

    解决办法:删除任何提及“安卓市场”的字眼,修改或删除涉及“安卓市场”的界面。这个问题解决很简单.

    9.需要登录才能正常使用的应用,缺少一个演示账户,展示应用的相关功能完整性。原文如下:

    We were unable to sign in to review your app with the demo account information you provided. In order for us to review your app, please provide us with a functional demo account so that we may fully assess your app's features

    演示账户

    解决办法:在上图中,为审核人员,提供一个用于操作App的演示账户,以手机登陆的App,需要提供一个手机号,手机号给一个测试账号用的,不需要短信验证码,密码和后台商量给一个固定四位或六位数,这些你都必须在备注里说清楚。

    10.如果你的应用包含后台定位和读取或写入健康数据,都必须在提交审核的时候,在应用描述里向用户表明,给你两段话。

    1.本应用包含HealthKit,支持App Health应用,经过用户允许后,可将Health应用的运动数据同步到该App。

    2.使用“XX”功能,会持续使用GPS定位服务,切换到后台仍会保存GPS连接,相比其他操作会消耗更多的电量。

    如果想确保审核通过,最好录制一个应用持续后台定位场景视频,这个视频真的不用很麻烦,推荐你一个工具苹果录屏专家,不过这个工具是有试用期的。把你的App装到手机,打开录屏专家,再打开你的App录制就好了,录好了,直接附件上传。很方便

    11.使用第三方地图SDK,比如百度地图,不需要再导入苹果的MapKit.framework。

    12.某些应用的销售地区限制(Your app contains content - or facilitates, enables, and encourages an activity - that is not legal in all of the locations in which the app is available.)原文如下:

    被拒原因截图

    这个原因,我仔细分析过,是在提交应用的时候,价格和销售范围选项中,销售范围选择了具体的某些国家或地区,所以需要你在打开应用或使用应用的过程中,判断当前地理位置是否在销售或服务范围内。比如你的应用,只支持在中国地区销售,那么香港和澳门特别行政区都不能使用和打开你的App,你的用户协议和服务协议也必须说清楚,否则苹果会认为你的应用容易出现一些法律纠纷,某些股票或贵金属类的应用,会有这样的销售范围限制。

    13.应用作者名与金融机构名字不一致

    针对理财、P2P等金融相关产品,苹果增加规定
    开发者的名字必须与APP内的金融机构名字保持一致,否则会被拒。
    且由同一品牌的金融机构提供服务的APP,必须发布在同一个开发者账号跟名称下。

    如果你已经代表委托人或者公司发布了这些APP,你的委托人或者公司应该注册iOS开发者账号,并把你添加到他们的开发者账号里,这样你就可以在他们账号下面提交并发布APP了。


    和开发者账号有关的其它内容

    1.极光推送鉴权方式切换

    之前使用极光推送,需要根据环境使用开发者账号分别生成一个开发环境推送证书和生产环境推送证书,将证书下载下来导入钥匙串访问,然后再将证书导出为一个后缀为p12的文件。在极光推送配置里将这两个P12文件添加进去,这种方式比较麻烦,而且需要检查证书是否过期,否则极光推送服务就会中断。这种鉴权方式为证书鉴权。现在极光又推出了另一种鉴权方式-Token Authentication


    鉴权方式

    使用Token Authentication的鉴权方式,就需要配合使用开发者账户中证书里面的一个新功能,如下图所示


    Certificates, Identifiers & Profiles

    这个key生成的是一个后缀为P8的文件,用来在推送设置中绑定KeyID,TeamID和BundleID。KeyID就是这个Key的对应ID,TeamID就是你开发者账户的ID(登录开发者账户后,直接在当前网页的网址链接中就可以看到,MemberShip中也可以找到),BundleID是你App的ID。

    使用这种鉴权方式,永远不必担心推送过期的问题,因为它是永久性的。

    2.想为自己的应用,添加一个描述性的备注,例如下图

    WechatIMG54.jpeg

    我真的看到过有人试图修改Display name来达到这种效果的,而且苹果对App名称是有字数限制的,根本不可能写这么长.其实很简单,在iTunes Connect中的App信息修改就行了,如下图所示


    Jietu20170913-145557.jpg

    先罗列这么多,很多被拒原因在网上都能找到解决办法,我只是举例了几种比较常见并且是我本人亲身遇到的情况,后续再遇到棘手的被拒问题,我找到了解决办法,也会第一时间更新。
    如果你有任何AppStore审核的问题以及关于开发者账号申请,续费,转让App,证书错误的问题,也可以在文章底下留言。


    有关应用中接入了HealthKit、TestFlight、Apple Pay的审核建议

    1.HealthKit

    使用HealthKit或者ResearchKit框架(出于健康目的用于进行人体生物学研究的框架)的应用程序,必须遵守其所有适用区域的法律,以及iOS Developer Program License Agreement中的3.3.28和3.39条款。(增加了对于ResearchKit框架的支持)

    将虚假或者错误的数据写入HealthKit的应用程序将会被拒绝。

    使用HealthKit框架的应用程序在iCloud中储存用户健康信息将会被拒绝。

    应用程序不允许将通过HealthKit API收集的用户数据用作广告宣传或者基于使用的数据挖掘目的,除了改善健康、医疗、健康管理以及医学研究目的。

    未经用户许可与第三方分享通过HealthKit API获得的用户数据的应用程序将会被拒绝。

    使用HealthKit框架的应用程序必须在营销文本中说明集成了Health app,同时必须在app用户界面清楚阐释HealthKit的功能。

    使用HealthKit框架的应用程序必须提供隐私政策,否则将会被拒绝。

    提供诊断、治疗建议,或者控制诊断疾病的硬件,或者治疗疾病的应用程序,若没有根据要求提供书面的监管审批,将会被拒绝。

    收集人体生物学研究相关数据的应用程序必须要获得参与者的许可,对于未成年人,应用程序要得到其父母或者监护人的许可。许可内容必须包括:(a)研究的性质、目的以及持续性;(b)参与流程、风险以及受益(福利);(c)信息的机密性和数据处理(包括与任何与第三方的共享);(d)参与者问题切入点;(e) 取消方法(新增)

    2.TestFlight

    应用程序仅能使用TestFlight对以公开发布为目的的应用进行beta版测试,且必须遵守完整的App Review Guidelines。

    当版本中包含的内容或功能有重大变化时,使用TestFlight的应用程序必须提交审核。

    使用TestFlight的应用程序不允许分发给测试者,以作为任何形式的补偿。

    3.Apple Pay

    使用Apple Pay的应用程序必须在出售任何商品或者服务之前为用户提供所有材料的购买信息,否则将会被拒绝。使用Apple Pay进行定期付款的应用程序必须提供最低限度续费期限,付费将持续直至被取消,每个阶段所付款额,费用付款归属,以及如何取消等。(增加了对于定期付款的规定)

    使用Apple Pay的应用程序必须正确使用 Apple Pay Human Interface Guidelines 中的Apple Pay标识和用户界面元素,否则将会被拒绝。

    使用Apple Pay作为购买机制的应用程序所提供的商品或服务不能触犯任何交付地范围内的法律,也不能用作任何非法目的。

    使用Apple Pay的应用程序必须提供隐私政策,否则将会被拒绝。

    只有为了促进或提高商品和服务的交付,或者依照法律要件,使用Apple Pay的应用程序才能与第三方分享通过Apple Pay获得的数据。

    相关文章

      网友评论

      • a48ea731c3a6:欢迎加入APP代上架服务,群聊号码:309504781 有过包记录 不是中介.

      本文标题:AppStore审核被拒原因及解决办法

      本文链接:https://www.haomeiwen.com/subject/tkdgjxtx.html