苹果App Store审核指南 https://developer.apple.com/app-store/review/guidelines/
prefs:root跳转
之前我们通过下面方法跳转至对应App蓝牙设置等界面,苹果已不支持这种API。
代码语言:javascript复制//iOS10
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=Bluetooth"] options:@{} completionHandler:nil];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=Bluetooth"]];
网上有很多将字符串转换成16进制,据说用这样的脏套路可以逃过代码审核扫描,在这里告诉大家,不要信!不要信!不要信!重要的话说三遍,已有人尝试并且再次被拒绝。 可以使用下面方法来打开“设置”界面:
代码语言:javascript复制if (iOSv8) {
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
} else {
NSURL *privacyUrl = [NSURL URLWithString:@"ACCOUNT_SETTINGS"];
if ([[UIApplication sharedApplication] canOpenURL:privacyUrl]) {
[[UIApplication sharedApplication] openURL:privacyUrl];
} else {
NSString *message = @"无法跳转到隐私设置页面,请手动前往设置页面,谢谢";
UIAlertView * alert = [[UIAlertView alloc]initWithTitle:@"对不起" message:message delegate:nil cancelButtonTitle:@"好的" otherButtonTitles: nil];
[alert show];
}
}
安卓/Android/图标/安卓系统手机等
无论在你的工程代码内、App用户界面、及iTunes Connect预览图、宣传文本、描述、关键字等任何地方!注意!是任何地方!苹果爸爸对这类内容零容忍! 不要出现字眼(安卓、Android)、图标(类似绿色小机器人)等,或诱导用户知晓或安装对应安卓平台应用,曾有电商平台App因为售卖安装安卓系统的三星手机被拒。所以还是不要以身试法的好。
测试数据、有bug闪退等
至少保证苹果方面审核人员看到数据的基本规范,不要出现类似“sdftase”胡乱输入或:“试用”,“演示”,“试用”,或“测试版本” 等字眼。 Apple审核规范中有一个条例,大概就是说明苹果方面没有义务给你的App做“测试工作”,所以开发人员需要保证提交的构建版本:数据规范、没有bug等闪退问题,并且UI需符合最基本的人机交互规范。
抽奖、幸运大转盘、抢购活动等
如果你的App中有类似功能,不想被拒就请注明:“该活动由xxx提供,与设备生产产商Apple Inc.无关”。字体再小也要写!
IPv6
协议没有指明必须使用IPv6,但是必须保证运行该App设备在IPv6环境下可以使用,若因为该问题被拒,并且经检查与自己公司服务器无关,就请更新第三方类似:SDWebImage、友盟、百度地图等。
元数据错误:提供的测试账号
如果产品设计审核、认证等业务,可能需要给苹果提供一个已认证通过的账号,请保证账号是在正式环境下,且密码、数据正确(和server端、测试同事沟通好)。
屏幕快照与App界面不符
上传到iTunes Connect的屏幕快照和App预览内容需要与App内本身呈现的界面相同,不要出现类似:快照中底部有五个Tab,App打开实际只有四个这样的低级错误。
App图标和启动页切图尺寸
Assets.xcassets内AppIcon和LaunchImage内对应的图标和启动页切图像素尺寸符合对应的规范。 如何设置详见: 图标:https://www.jianshu.com/p/a3dad451f9a4 启动页:https://www.jianshu.com/p/c8c45d80ba4c
GPS定位功能常驻后台
苹果为了保证设备的使用流畅,通常是不允许应用在后台持续开启。 若真的需要使用,最好让审核人员能直观的感受到持续定位对App产生的功能影响,有必要的话可以录一个视频(记得上传到YouTube而不是土豆优酷)。 在info.plist中添加:Privacy - Location Always Usage Description(NSLocationAlwaysUsageDescription)并添加对应描述,并在iTunes Connect内对应App描述添加“App在后台持续使用GPS定位可能使您的电池过快被消耗,并降低电池寿命”。
否则请选择在使用过程中定位:Privacy - Location When In Use Usage Description(NSLocationWhenInUseUsageDescription)。
隐私设置
从iOS 10.0开始,苹果更加注重用户隐私,很多像:定位、相机、相册等功能需要用户同意后才能使用。 所以当需要调用对应方法时,请在info.pilst中配置对应项。
Data Class | Xcode Key | Raw Info.plist Key |
---|---|---|
Apple Music | Privacy - Media Library Usage Description | NSAppleMusicUsageDescription |
Bluetooth | Privacy - Bluetooth Peripheral Usage Description | NSBluetoothPeripheralUsageDescription |
Calendar | Privacy - Calendars Usage Description | NSCalendarsUsageDescription |
Camera | Privacy - Camera Usage Description | NSCameraUsageDescription |
Contacts | Privacy - Contacts Usage Description | NSContactsUsageDescription |
Health | Privacy - Health Share Usage DescriptionPrivacy - Health Update Usage Description | NSHealthShareUsageDescriptionNSHealthUpdateUsageDescription |
Home | Privacy - HomeKit Usage Description | NSHomeKitUsageDescription |
Location | Privacy - Location Always Usage DescriptionPrivacy - Location When In Use Usage Description | NSLocationAlwaysUsageDescriptionNSLocationWhenInUseUsageDescription |
Microphone | Privacy - Microphone Usage Description | NSMicrophoneUsageDescription |
Motion | Privacy - Motion Usage Description | NSMotionUsageDescription |
Photos | Privacy - Photo Library Usage Description | NSPhotoLibraryUsageDescription |
Reminders | Privacy - Reminders Usage Description | NSRemindersUsageDescription |
Siri | Privacy - Siri Usage Description | NSSiriUsageDescription |
注意:使用隐私访问key时,对应value必须填写上使用的目的。例如:需要获取当前用户位置展示在第三方百度地图上,那就填“是否允许App使用您的位置用于在地图上展示实时位置”。否则审核会拒绝
按钮不能点击、第三方登录展示问题
1.不能点击的按钮必须隐藏或者置灰; 2.涉及微信快捷登录,需要判断当前设备是否已安装微信App,未安装应隐藏对应入口按钮。否则点击没有效果会直接导致审核被拒; 3.第三方类似微信、QQ分享、支付功能、跳转高德、百度导航等也一样。
软件级别设置
如有菠菜、hun配、两性、se情或暗示、暴力、卡通幻想等内容,需要设置软件级别。
暂时先整理这么多,再次拥护苹果爸爸,三叩首!
如果本文对你有所帮助记得点个赞哈