APP审核驳回和重大版本问题经典案例及解决方案

简介: APP审核驳回和重大版本问题经典案例及解决方案

特声明本文章只针对典型案例,不针对公司或个人,若有雷同纯属意外。

1.APP发布苹果商店时没有修改连接现网服务器的域名,而是连接的测试服务器的IP地址,导致用户升级后不能正常使用,业务中断。由于苹果的APP审核要3到5个工作日,所以不能立刻重新发布APP并下载使用。

解决方案:对版本发布要有发布流程文档,发布APP按照文档进行核对进行。预发测试最好要一天(稳定后的版本最长可达三天),切不可以预发时还在改问题,进入预发测试要封版本,非严重问题不修改,在进入预发测试最后半天禁止提单,修改问题,大多数的严重问题都是发布前修改问题没有全面测试引起的,修改小问题引起大问题的事情多了的去。预发测试用例要包含常用关键测试场景。

2.APP发布后使用时,发现有关键的图片加载不全或加载不上(透明图片)。开发者通过XCODE安装到测试手机上能正常使用。

原因是应用图片名称使用了@x2.png,在XCODE上由于对图片有临时存储功能,装到手机上可以找到图片,当生成IPA包时,不能把这类的图片完全匹上。可见这是XCODE的重要BUG。开发者自己很难发现这类问题,除非先生成IPA包,放到http://fir.im,七牛服务器,或上传到苹果商店,用TestFlight下载,或者让另一个开发者下载代码并通过XCODE安装才能真正发现。只让一个人开发一个版本, 不经过上面的准商店测试是发现不了这类问题的。老板为了省钱想一个人包打一切,那样理想是丰满的,现实是骨干的,人员备份还是好处的。

3.APP开启了定位服务,结果应用中的页面没有一个页面有带地图定位的页面,导致驳回,要求提供有地图定位的视频。

原因是提供给审核人员的账户里没有数据,导致用户很多页面看不到,特别是地图定位页面看不到。

解决方案是:

给APP审核人员提供的登录帐号和密码,并且提供部分测试数据,防止审核人员看到白茫茫的一天,只看你满文在画饼充饥。

4.APP审核时发现,有版本更新的功能,直接被no pass了。因为今年3月初,苹果禁止发布的APP有版本更新功能,要用萌萌达的版本更新功能。

解决方案:

你要关心苹果对APP发布规则和新功能的介绍了。看来你要使用你那中国式英语看下苹果的公告了。就是你需要版本更新,也不能当面让苹果审核BOSS发现啊,至少先欺骗它通过,以后再改数据库的版本号,启动版本更新也不迟。版本更新真的有需要保留,是给自己留的后门,若业务大变更可以启动。但是别当家常便饭来刷大家(强制或非强制下载新版本)。

5.APP由于使用友盟的新浪微博没有安装,授权登录跳到空白页面,导致审核不通过。

解决方案:

判断是否安装新浪微博,若发现没有安装弹出没有安装新浪微博就可以了,别乱跳舞了。

6.一个开发人员加入一个图片并且是该图片被两个目录引用,然后删除了图片,在他的电脑上安装和发布APP正常,别人下载相同的代码都报找不到图片。

这个也可能和第2种情况类似,本机XCODE缓存了以前删除的图片,导致可以找到已经删除的图片。

解决方案:

让他删除图片重新正确加载,删除search path对本地路径的包含地址,统一使用相对路径。上传工程文件就可以解决。

一下是具体被拒绝的实际例子。

1.This app attempts to access privacy-sensitive data without a usage description. The app’s Info.plist must contain an NSBluetoothPeripheralUsageDescription key with a string value explaining to the user how the app uses this data.

This app attempts to access privacy-sensitive data without a usage description. The app’s Info.plist must contain an NSMicrophoneUsageDescription key with a string value explaining to the user how the app uses this data.

Once these issues have been corrected, you can then redeliver the corrected binary.

因为你的应用app使用了麦克风,但是Info.plist里没有配置,它是会引起 crash的。至于的蓝牙的描述,估计是蓝牙和它属于一类问题,除非你是用了蓝牙没有配置,否者路过。

2.Your app has the UIFileSharingEnabled key set to true in the Info.plist, but the Documents folder includes files and folders not intended for file sharing.


Next Steps

Please move all files that are not intended for user access via the file sharing feature to another part of your app’s sandbox. When file sharing is enabled, the entire Documents folder is used for file sharing.


If your app does not require the file sharing feature, please set the UIFileSharingEnabled key in the Info.plist to false.

这个是你使用了app的文档共享功能,发布描述时没有说明为何使用它。当然绝对大多数的应用不需要文档共享,直接删除那条属性(Application supports iTunes file sharing)或设置为NO.当然你若需要这个功能,在发布描述里说明你的app为何需要文档共享,有什么用处。我们的应用,在测试版本需要这个文档共享功能来到处日志文件。正式版本是不打日志的,所以不需要这个文档共享功能。

3.We discovered one or more bugs in your app when reviewed on iPad and iPhone running iOS 9.3.3 on Wi-Fi connected to an IPv6 network.

Specificaly, we encountered an network error message upon launch.

We’ve attached screenshot(s) for your reference.

Next Steps


Please run your app on a device while connected to an IPv6 network (all apps must support IPv6) to identify the issue(s), then revise and resubmit your app for review.


If we misunderstood the intended behavior of your app, please reply to this message in Resolution Center to provide information on how these features were intended to work.


For new apps, uninstall all previous versions of your app from a device, then install and follow the steps to reproduce the issue(s). For updates, install the new version as an update to the previous version, then follow the steps to reproduce the issue(s).


Resources

For information about supporting IPv6 Networks, please refer to Supporting IPv6 DNS64/NAT64 Networks and About Networking

这个是你的app是否支持http请求,它默认是只支持https请求。这个需要你在Info.plist文件中增加App Transport Security Settings和子属性Allow Arbitrary Loads为YES

4.你的应用开启了远程推送,你的证书不支持远程推送,实际上你也没有实际使用远程推送。以前苹果对这个配置检查不严格,现在检查严格了。可能你没有配置定位功能,但是它顺带也报你配置了定位功能。因为定位功能配置和远程推送配置是一类问题,可能它也顺带说了。不要被它误解了。解决方案:若你没有使用远程推送,关闭它的能力就可以了,一了百了。

We identified one or more issues with a recent delivery for your app, “****”. Please correct the following issues, then upload again.


Missing Info.plist key - This app attempts to access privacy-sensitive data without a usage description. The app’s Info.plist must contain an NSLocationWhenInUseUsageDescription key with a string value explaining to the user how the app uses this data.


Though you are not required to fix the following issues, we wanted to make you aware of them:


Missing Push Notification Entitlement - Your app appears to register with the Apple Push Notification service, but the app signature’s entitlements do not include the “aps-environment” entitlement. If your app uses the Apple Push Notification service, make sure your App ID is enabled for Push Notification in the Provisioning Portal, and resubmit after signing your app with a Distribution provisioning profile that includes the “aps-environment” entitlement. Xcode 8 does not automatically copy the aps-environment entitlement from provisioning profiles at build time. This behavior is intentional. To use this entitlement, either enable Push Notifications in the project editor’s Capabilities pane, or manually add the entitlement to your entitlements file. For more information, see https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/HandlingRemoteNotifications.html#//apple_ref/doc/uid/TP40008194-CH6-SW1.

5.app图标缺失。完善图标就可以了。

We have discovered one or more issues with your recent delivery for “***”. To process your delivery, the following issues must be corrected:

Invalid Image Path - No image found at the path referenced under key “CFBundleIcons”: AppIcon20x20

Once these issues have been corrected, you can then redeliver the corrected binary.

6.iOS提交审核:您的 App 正在使用广告标识符 (IDFA)

您的 App 正在使用广告标识符 (IDFA)。您必须先提供关于 IDFA 的使用信息或将其从 App 中移除,然后再上传您的二进制文件。

解决方案:检查是否使用IDFA

检查我们项目中是否使用广告标示符,其实就是查看我们framework中是否有个叫做AdSupport.framework的框架;

如果检查framework没有,可能是我们接入的第三方里面有,用以下方法检查第三方中是否包含有IDFA版本;

(1)打开终端cd到要检查的文件的目录;

(2)执行命令:grep -r advertisingIdentifier .(注意别少了点);

jiaguoshangdeMacBook-Air:ArtEnjoymentRunLu-2.4.0的副本 jiaguoshang$ grep -r advertisingIdentifier .
./Pods/YXFDCategories/YXFDCategories/Classes/UIDevice+YiXiang.m:            idfa = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
Binary file ./Pods/UMengUShare/UShareSDK/SocialLibraries/Twitter/TwitterCore.framework/TwitterCore matches
Binary file ./Pods/UMengUShare/UShareSDK/SocialLibraries/UniqueId/libSocialUniqueId.a matches
Binary file ./Pods/UMengUShare/UShareSDK/SocialLibraries/Facebook/FBSDKCoreKit.framework/FBSDKCoreKit matches
Binary file ./Pods/UMengUShare/UShareSDK/SocialLibraries/Sina/SinaSDK/libWeiboSDK.a matches

可以发现罪魁祸首是私有库YXFDCategories。把私有库中相关代码删除后,再次提交版本就不提示使用广告描述符了。真奇怪UMengUShare开源第三方库也检测出来使用了,但是苹果审核程序直接无视了。

7.只支持微信等第三方软件授权登录,并且不支持网页授权登录或用户名密码登录。

Guideline 4.2.3 - Design - Minimum Functionality

We were required to install the WeChat app before we could log in via WeChat. Users should be able to log in with WeChat and access their accounts without having to install any additional apps.

Next Steps

If you would like to offer authentication through WeChat, please use a mechanism that allows users to log in with WeChat from within your app without first having to install an additional app.

We recommend implementing the Safari View Controller API to display web content within your app. The Safari View Controller allows the display of a URL and inspection of the certificate from an embedded browser in an app so that customers can verify the webpage URL and SSL certificate to confirm they are entering their sign in credentials into a legitimate page.

可以看到流行的软件当发现本地没有装微信时,都不显示微信登录;QQ当没有安装,大都也不显示QQ登录图标,个别的显示QQ图标并且采用网页登录QQ授权,不过他们都有用户名密码登录功能。所以它的常规解决方案时当发现本地没有安装第三方授权软件直接不显示它的按钮(按钮灰化不使能或弹出提示苹果照样给你驳回),就时没有完整的用户名/密码登录功能,至少给他在审核期间可以只有审核人员知道的登录账户和密码。可以当发现服务器返回版本低于app版本时显示临时用户名密码登录,发布时选择手动发布。当审核通过时(苹果会发邮件一般造成7点左右审核过的可能比较多),修改服务器返回的最新版本号并设置不更新,并发布版本,等在所在区域的苹果商店看到最新的app时在,再设置为非强制更新,等一天后等全世界的区域都上架后若是需要强制更新的再设置为强制更新(世界各个苹果市场上架时间并不一致,有不同的负责任,是苹果审核人员手动上架的,一般2小时上架,也有时6个小时上架的)。当然这个你的用户密码功能没有开发完的情况。若你的这个功能完全,直接不显示第三方授权登录的按钮,保留用户名密码按钮就可以。

8.自己的截图不能反映自己App的主要功能(We noticed that your screenshots do not sufficiently reflect your app in use.),重新换了设计师做的UI图(现在app流行的截图不是直接用手机对app界面进行手机截屏,而是UI设计师设计一个图把需要的数据放到截图上,app页面只是截图的一部分,其它的部分放上说明信息。任何事情都有风险的,按钮和标签位置要相对正确,有不大的出入,就被苹果KO了。这就是新玩法的阵痛,所以我们发布新app时都是先试水一两次,可以审核时的功能不是很全,防止审核不过影响市场推广)就可以了。

Guideline 2.3.3 - Performance - Accurate Metadata
We noticed that your screenshots do not sufficiently reflect your app in use.
Specifically, your 5.5-inch iPhone screenshots do not display the app in the correct device frame.
Next Steps
To resolve this issue, please revise your screenshots to ensure that they accurately reflect the app in use on the supported devices. For iPhone, you need a set of 5.5-inch display screenshots and for iPad, you need a set for 12.9-inch display. This set will be scaled appropriately down to other device sizes when viewed on the App Store in each territory.
Note that 5.8-inch display assets for iPhone X are optional and don't scale down to other devices sizes. Screenshots that include iPhone X layout features like rounded corners or sensor housing should only be used for the 5.8-inch display.
Resources
For resources on creating great screenshots for the App Store, you may want to review the App Store Product Page information available on the Apple developer portal.
Please ensure you have made any screenshot modifications using Media Manager. You should confirm your app looks and behaves identically in all languages and on all supported devices. Learn how to use Media Manager to add custom screenshots for each display size and localization.
Please see attached screenshots for details.
Since your App Store Connect status is Metadata Rejected, we do NOT require a new binary. To revise the metadata, visit App Store Connect to select your app and revise the desired metadata values. Once you’ve completed all changes, reply to this message in Resolution Center and we will continue the review.

9.iPhone 8 plus的截图有iphone x的显示特性(Specifically, your 5.5-inch iPhone screenshots include iPhone X display features.),重新换了设计师做的UI图就可以了。

Guideline 2.3.3 - Performance - Accurate Metadata
We noticed that your screenshots do not sufficiently reflect your app in use.
Specifically, your 5.5-inch iPhone screenshots include iPhone X display features.
Next Steps
To resolve this issue, please revise your screenshots to ensure that they accurately reflect the app in use on the supported devices. For iPhone, you need a set of 5.5-inch display screenshots and for iPad, you need a set for 12.9-inch display. This set will be scaled appropriately down to other device sizes when viewed on the App Store in each territory.
Note that 5.8-inch display assets for iPhone X are optional and don't scale down to other devices sizes. Screenshots that include iPhone X layout features like rounded corners or sensor housing should only be used for the 5.8-inch display.
Resources
For resources on creating great screenshots for the App Store, you may want to review the App Store Product Page information available on the Apple developer portal.
Please ensure you have made any screenshot modifications using Media Manager. You should confirm your app looks and behaves identically in all languages and on all supported devices. Learn how to use Media Manager to add custom screenshots for each display size and localization.
Please see attached screenshots for details.
Since your App Store Connect status is Metadata Rejected, we do NOT require a new binary. To revise the metadata, visit App Store Connect to select your app and revise the desired metadata values. Once you’ve completed all changes, reply to this message in Resolution Center and we will continue the review.

10.App 包含 NSUserTrackingUsageDescription提交时失败。

无法提交以供审核

要开始审核流程,必须提供以下项目:

• 您的 App 包含 NSUserTrackingUsageDescription,这表示它可能会请求追踪用户。要提交以供审核,请更新您的 App 隐私答复以注明从此 App 中收集的数据将用于追踪目的,或者更新您的 App 二进制文件并上传新的构建版本。了解更多

11.没有提供测试账号密码或提供的测试账号密码不正确导致无法登录。

准则 2.1 - 所需信息

我们期待审核您的应用,但我们无法使用您提供的演示帐户凭据登录。

后续步骤

请提供有效的演示帐户的用户名和密码,该帐户可以完全访问您的应用程序的特性和功能,或者提供一个演示模式,显示您的应用程序中可用的所有特性和功能。请注意,我们无法使用展示您正在使用的应用的演示视频来继续审核。

为有效的演示帐户提供凭据:

  • 登录 App Store Connect。
  • 单击我的应用程序。
  • 选择您的应用程序。
  • 单击屏幕左侧的应用程序版本。
  • 向下滚动到应用审查信息。
  • 选择“需要登录”复选框。
  • 在用户名和密码字段中输入演示凭据。
  • 单击版本信息页面顶部的保存。
    Guideline 2.1 - Information Needed

We’re looking forward to reviewing your app, but we were unable to sign in with the demo account credentials you provided.

Next Steps

Please provide the username and password for a valid demo account with full access to your app’s features and functionality or include a demonstration mode that shows all of the features and functionality available in your app. Note that we cannot use a demo video showing your app in use to continue the review.

To provide credentials for a valid demo account:

  • Sign in to App Store Connect.
  • Click My Apps.
  • Select your app.
  • Click on the app version on the left side of the screen.
  • Scroll down to App Review Information.
  • Select the “Sign-in required” checkbox.
  • Enter demo credentials in the Username and Password fields.
  • Click Save at the top of the Version Information page.

以后遇到app被拒绝,我会把苹果拒绝的情况都贴出来。


目录
相关文章
|
1月前
|
移动开发 网络协议 安全
HTML5页面被运营商DNS问题及解决方案,app中h5页面源码的获取
HTML5页面被运营商DNS问题及解决方案,app中h5页面源码的获取
86 4
|
1月前
|
移动开发 小程序 前端开发
开发指南022-多版本APP的账号统一
移动前端有多种形态,对于管理系统领域主要有4种形态
|
1月前
|
存储 数据安全/隐私保护 iOS开发
应用在App Store上被拒重新提交审核流程指南
该文本是关于iOS应用发布的步骤说明
32 2
|
1月前
|
监控 数据库 数据安全/隐私保护
第三方授权的应用苹果审核被驳回解决方案和app版本更新
第三方授权的应用苹果审核被驳回解决方案和app版本更新
27 0
|
1月前
|
iOS开发
app启动时的闪屏页显示不全问题的两种解决方案
app启动时的闪屏页显示不全问题的两种解决方案
25 0
|
1月前
|
定位技术 开发工具 iOS开发
ios9定位服务的app进入后台三分钟收不到经纬度,应用被挂起问题及解决方案
ios9定位服务的app进入后台三分钟收不到经纬度,应用被挂起问题及解决方案
22 0
|
1月前
|
移动开发 JavaScript 前端开发
APP的HTML5页面经过运营商网络被植入手机管家问题及分析,解决方案见新文章
APP的HTML5页面经过运营商网络被植入手机管家问题及分析,解决方案见新文章
26 0
|
1月前
|
前端开发
最新版本create-react-app 如何使用css-module
最新版本create-react-app 如何使用css-module
24 0
|
1月前
|
存储 数据安全/隐私保护 开发者
图文详解丨iOS App上架全流程及审核避坑指南
App Store作为苹果官方的应用商店,审核严格周期长一直让用户头疼不已,很多app都“死”在了审核这一关,那我们就要放弃iOS用户了吗?当然不是!本期我们从iOS app上架流程开始梳理,详细了解下iOS app上架的那些事。
|
3天前
|
编解码 Java Android开发
FFmpeg开发笔记(三十一)使用RTMP Streamer开启APP直播推流
RTMP Streamer是一款开源的安卓直播推流框架,支持RTMP、RTSP和SRT协议,适用于各种直播场景。它支持H264、H265、AV1视频编码和AAC、G711、OPUS音频编码。本文档介绍了如何使用Java版的RTMP Streamer,建议使用小海豚版本的Android Studio (Dolphin)。加载项目时,可添加国内仓库加速依赖下载。RTMP Streamer包含五个模块:app、encoder、rtmp、rtplibrary和rtsp。完成加载后,可以在手机上安装并运行APP,提供多种直播方式。开发者可以从《FFmpeg开发实战:从零基础到短视频上线》获取更多信息。
27 7
FFmpeg开发笔记(三十一)使用RTMP Streamer开启APP直播推流