上架梳理
好久没有写博客了,外包公司就是比较忙,没办法在第一时间整理并写出博客,如今离职,我将慢慢梳理这几年的工作经验,先从上架开始梳理
带有微信支付与支付宝支付的App
商城类App是有实物交易的,比如某宝、某东等,还有就是有某种服务的,如外卖、维修等,如某团。
在这几类App中一定会用到两个框架,WXApi与AliPaySDK,这两个框架苹果审查委员会会严查,尤其是AliPaySDK,因为这是专门进行支付的框架,而WXApi还有微信登录与分享的功能,并不会严查这个框架,也就是说你也可以进行仅支持微信支付的操作来隐藏支付操作流程,在需要的时候自动解开也不是不可以,但要考虑好后果。
带有苹果内购的App
很多人都在考虑,什么情况下需要使用苹果内购,什么情况下不需要,我这里做一个总结,可能也不是很全面,如果需要全面的解释,建议查看官方文档苹果Appstore审查规则
- 带有会员机制,并且App的内容对会员与普通用户是两种开放状态
- 虚拟交易,如购买文档全部查看权限
- 一次性交易
- 没有退款流程的交易
上述这些是我总结出来的,可能会有纰漏,遇到这些功能或机制,不用想了,老老实实的进行苹果内购服务了
带有三方登录的App,如微信登录
自从iOS 13发布后,新增了Apple in sign即苹果三方登录,如果你的App只存在账号密码登录,则不需要理这条。
如果你的应用中存在微信登录等功能时就需要考虑苹果三方登录的问题,我提供了一下几种种解决方案
- 加入苹果三方登录。
- 这种是前端解决最方便的,但是确实让后端比较头疼的,因为在Android端是没有苹果登录的,就需要后端对iOS端的苹果登录做特殊处理,但与iOS端无关
- 删除三方登录。
- 删除微信登录等三方登录,即不用这种登录方式,只进行账号密码登录。这个就需要跟产品去PK一下了,要去睡服他
- 隐藏三方登录
- 如果你没有怼过产品,也没有怼过后端,那么你可以考虑这种方式,在项目中做这样的一个操作,即判断手机中是否安装了三方应用(如微信),如果安装了三方应用,就显示三方登录的按钮,反之就隐藏。可以这么做的原因是在苹果审查时,他手机中是不会安装其他三方应用的,因此这时三方登录的按钮就一定会隐藏。但后果自负
医疗App
医疗类的App在审核时有特殊要求:
- 需要当前账号的所属公司的公司信息以及医疗资质证明
- 如果没有资质证明,但合作方有医疗资质证明时,需要有合作方的合作合同以及合作方的医疗资质证明
- 如果没有合作方则无法上线
在上架审核时需要将公司的信息、医疗资质证明、如果有合同的话就增加合同。将这几个文件压缩成zip文件,名字必须为英文(也可以为汉语拼音),在备注中进行医疗资质声明
医疗资质认证说明:
1. 我们(xxxx有限公司)并没有医疗方面的资质认证
2. 但我们的合作方(xxxx医院)是有医疗方面的资质的,并且我方与合作方已达成合作协议
3. 我们将以图片的方式为您提供我们合作方的医疗资质、合作协议
4. 详见附件
根据提供的医疗认证说明自行描述即可,然后将打包好的文件上传到附件中即可。
使用HealthKit框架App
如果你的项目使用了HealthKit框架,即获取计步数据等功能时,需要在应用的描述中添加
注意事项
- 与HealthKit中的运动数据同步。xxx已接入HealthKit,xxx需要获取来自HealthKit的运动数据
具体需要根据你自己的应用进行描述,也可以参考运动类App进行添加
使用后台位置获取App,如后台导航功能
如果你的项目中使用了后台导航应用时,需要需要在应用中添加描述
注意事项
- xxx会持续使用GPS服务以及语音播放服务,切换至后台播放时仍会继续,相比其他操作会消耗更多的电量,并影响电池续航时间
语句可以自行斟酌,但必须存在,影响电池续航时间,这句话,并且在审核时需要录制视频,视频内容为切换至后台时仍然可以进行后台导航
使用后台语音播放App,如音视频通话功能
如果你的项目中使用了后台语音播放功能时,需要录制后台播放视频。
连接外部设备,如使用蓝牙连接设备
连接外部设备部不仅仅是蓝牙连接,只要你的App中存在连接外部设备的操作,比如扫码进行连接等,都需要用一个第三方视角进行外部设备连接的完整操作视频,并发送给苹果审查人员。
社交类App
如果你的App中存在用户发布文章的行为,如微博的文章等功能时,需要以下内容
- 需要有存在条款或协议,协议中需要声明,对令人反感的内容的处理不容忍,以及举报、屏蔽的机制,并且该协议必须让用户强制同意,可以录制视频给官方审查查看
- App需存在屏蔽或拉黑机制,该机制可以不做任何屏蔽或拉黑操作,但必须要有点击后的返回操作
- App需存在举报功能,举报功能要显眼,不要藏的太深
- 同意的条款或协议需要放在比较显眼的位置方便查看,如关于我们中。
PushKit 框架
在一些App中,当需要在手机息屏或者App被杀死时,仍然需要该App播报某些推送音频时,比如外卖平台中,在息屏时仍然会播报“新的外卖订单”等语音时,需要使用PushKit 框架。
但是,使用PushKit
框架,就一定会用到CallKit
框架,而CallKit 框架在中国大陆是禁止使用的,因此,在上架是需要在备注中对使用CallKit 框架做出说明,即随使用了CallKit 框架,但仅用于PushKit 框架的配合使用。
广告标识符
关于广告标识符,在iOS 14.5
之后的系统中明确说明,如果需要使用广告标识符时,需要向用户告知,并获得用户的同意才可继续使用。
- 如果是自己的接口或者后台需要获取
IDFA
时,需要对iOS 14.5
之后的系统进行判断,植入AppTrackingTransparency/ATTrackingManager.h
框架,使用[ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:]
方法进行权限同意 - 如果使用的是第三方的框架时,比如
FaceBook SDK
、友盟+SDK
时,需要将该框架升级到最新版本,或者支持iOS 14.5
之后的版本 - 在
info.plist
中增加Privacy - Tracking Usage Description(NSUserTrackingUsageDescription)
并设置内容,我所设置的内容为:为了向您展示更优质,更感兴趣的内容服务,我们想访问您的广告标识符 仅供参考 - 更新
App 隐私
内容,勾选标识符
- 可以在备注中做提示,具体可以参考你所使用的三方的内容,如友盟的 我们的产品集成友盟+SDK,友盟+SDK需要收集您的设备Mac地址、唯一设备识别码(IMEI/android ID/IDFA/OPENUDID/GUID、SIM 卡 IMSI 信息)以提供统计分析服务,并通过地理位置校准报表数据准确性,提供基础反作弊能力。
- 最后切记,如果使用了
IDFA
,一定要声明,不要冒着被封号的风险去试图欺骗审核人员
Guideline 2.1 - Performance - App Completeness IPV6
当审核被拒,并且苹果说在登录页面中一直 loading 的时候,就需要考虑是否是IPV6
没有开启的原因了,这个问题可以问一下后台或者运维的同学。
首先说一下 App 网络请求的过程:
这个是官网上给出的流程图,首先App发送一个IPV6的网络请求,然后在DNS服务器会先解析并查看是否有IPV6的地址,如果有的话,则直接找到并连接这个地址,如果没有找到这个地址的话,DNS会自动把这个IPV6的地址转换成IPV4的地址。
那么为什么苹果审核有的时候能通过,有的时候不能通过呢? 那是因为咱们的DNS都是在国内,而苹果是在美国IPV6的环境声测试的,当他们的ATS向你的DNS发送请求时,如果连接不通,那么苹果审核人员就会认为你不支持IPV6,所以就会被拒,这种情况下一般只需要再次提交审核就好了。
那么我们需要做什么呢?
- 首先要把请求接口都换成域名形式的,一定不要写
IP地址
,因为一定会再次被拒 - 如果你的网络请求使用的是第三方框架,如
AFNetWorking
,则需要将该框架升级到最新版本 - 如果网络请求是自己写的,那么需要该成
NSURLSession
。 - 如果还是不成功,那么最稳妥最省力的办法就是让域名支持IPV6,这个方法无需前台人员过多的操作。
至此,基本就可以审核成功了!!!