最近被苹果拒绝的条款和解决方法

    最近一周上架3个不同类型的App,其中2个还在审核中,不同的理由被拒绝多次,被苹果爸爸折磨的死去活来。下面记录这些心酸的历程。

2. 5 Performance: Software Requirements

Guideline 2.5.1 - Performance - Software Requirements

Your app uses the "prefs:root=" non-public URL scheme, which is a private entity. The use of non-public APIs is not permitted on the App Store because it can lead to a poor user experience should these APIs change.
prefs:root=privacy&path=camera
prefs:root=privacy&path=photos
Continuing to use or conceal non-public APIs in future submissions of this app may result in the termination of your Apple Developer account, as well as removal of all associated apps from the App Store.
Next Steps
To resolve this issue, please revise your app to provide the associated functionality using public APIs or remove the functionality using the "prefs:root" or "App-Prefs:root" URL scheme.
If there are no alternatives for providing the functionality your app requires, you can file an enhancement request.

解决方法

    这个prefs:root问题之前也有遇到过,使用的选择图片第三方库TZImagePickerController历史版本里面有关于判断iOS 8.0 版本以下的代码有使用到prefs:root。直接pod更新到最新的版本就可以。

2. 1 Performance: App Completeness

Guideline 2.1 - Performance - App Completeness

Your app or its metadata does not appear to include final content.
Before you submit your app to the App Store, all of its content and metadata must be final. Your app must not include placeholder or incomplete information. For example, an app with “lorem ipsum” text in the app description field will be rejected. Likewise, an app with placeholder screenshots, such as “screenshot coming soon,” will be rejected. Instead, you should only submit an app with complete information and content throughout.
Next Steps
To resolve this issue, please review your app and metadata to ensure that all of its content is final.

解决方法

    这个完全是自己的锅,打包的时候环境没有切换正式环境,测试环境的商品图片都是占位图,切换到正式环境就行。

2. 3 Performance: Accurate Metadata

Guideline 2.3.3 - Performance - Accurate Metadata

We noticed that your screenshots do not sufficiently reflect your app in use.
Specifically, your 6.5-inch iPhone and 5.8-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 example, a gaming app should feature screenshots that capture actual gameplay from within the app. Marketing or promotional materials that do not reflect the UI of the app are not appropriate for screenshots.
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 6.5-inch display assets for iPhone XS Max are optional, and can scale down to iPhone XR, iPhone XS, and iPhone X. Screenshots that include features like rounded corners or sensor housing should only be used for the 6.5-inch or 5.8-inch display.
App Store screenshots should accurately communicate your app’s value and functionality. Use text and overlay images to highlight your app’s user experience, not obscure it. Make sure app UI and product images match the corresponding device type in App Store Connect. This helps users understand your app and makes for a positive App Store experience.

解决方法

    苹果表示6.5英寸和5.8英寸的应用截图不准确,没有反映出App的价值和功能。我当时上传的截图是这样的,是UI设计师给出的应用轮播图。实际上App的截图和设计图没有多少差别,但是为了上架,还是用模拟器把每个尺寸的真实截图保存下来,传上去。


屏幕快照 2019-03-22 下午3.52.11.png

2. 1 Performance: App Completeness

Guideline 2.1 - Performance - App Completeness

We discovered one or more bugs in your app when reviewed on iPhone running iOS 12.1.4 on Wi-Fi.
Specifically, your app did not fetch content appropriately.
Next Steps
To resolve this issue, please run your app on a device to identify any issues, 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. For updates, install the new version as an update to the previous version, then follow the steps to reproduce the issue.

解决方法

    苹果提供的截图是搜索页面除了输入框,没有任何搜索结果。苹果认为是网络问题。我没有重新打包提交,直接在底下的输入框回复是输入的关键字没有匹配任何商品,所以不显示。然后提供了相关搜索的截图。第二天就直接上架通过了,苹果还是蛮好说话的。


1553241829947.jpg

2. 5 Performance: Software Requirements

Guideline 2.5.2 - Performance - Software Requirements

During review, your app installed or launched executable code, which is not permitted on the App Store. Specifically, your app uses the itms-services URL scheme to install an app.
Please note that while educational apps designed to teach, develop, or allow students to test executable code may, in limited circumstances, download code, such code may not be used for other purposes and such apps must make the source code completely viewable and editable by the user.
The next submission of this app may require a longer review time, and this app will not be eligible for an expedited review until this issue is resolved.
Next Steps
Review the Software Requirements section of the App Store Review Guidelines.
Ensure your app is compliant with all sections of the App Store Review Guidelines and the Terms & Conditions of the Apple Developer Program.
Once your app is fully compliant, resubmit your app for review.
Submitting apps designed to mislead or harm customers or evade the review process may result in the termination of your Apple Developer Program account. Review the Terms & Conditions of the Apple Developer Program to learn more about our policies regarding termination.

解决方法

    被这个问题卡了两次,第一次还以为是NSURLProtocol分类中使用了私有API,但是下面的代码中没有直接用私有API,而是用了类名反射机制躲避审查。后来第二次被拒绝,并且附带了下面一条了4.0 设计条款才意识到不是这个问题。

FOUNDATION_STATIC_INLINE Class ContextControllerClass() {
    static Class cls;
    if (!cls) {
        cls = [[[WKWebView new] valueForKey:@"browsingContextController"] class];
    }
    return cls;
}

FOUNDATION_STATIC_INLINE SEL RegisterSchemeSelector() {
    return NSSelectorFromString(@"registerSchemeForCustomProtocol:");
}

FOUNDATION_STATIC_INLINE SEL UnregisterSchemeSelector() {
    return NSSelectorFromString(@"unregisterSchemeForCustomProtocol:");
}

@implementation NSURLProtocol (WebKitSupport)

+ (void)wk_registerScheme:(NSString *)scheme {
    Class cls = ContextControllerClass();
    SEL sel = RegisterSchemeSelector();
    if ([(id)cls respondsToSelector:sel]) {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
        [(id)cls performSelector:sel withObject:scheme];
#pragma clang diagnostic pop
    }
}

+ (void)wk_unregisterScheme:(NSString *)scheme {
    Class cls = ContextControllerClass();
    SEL sel = UnregisterSchemeSelector();
    if ([(id)cls respondsToSelector:sel]) {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
        [(id)cls performSelector:sel withObject:scheme];
#pragma clang diagnostic pop
    }
}

4.0 Performance: Design

4.0 Performance: Design

Your app includes an update button or alerts the user to update the app, but the update button or alert does not link directly to the app’s page on the App Store.
Next Steps
To resolve this issue, please ensure that tapping the update button takes the user directly to the app’s page on the App Store to update the app.

解决方法

    这个和上面的是联动的条款。原因是在App启动的时候,会检查更新版本,假如有最新版本,会跳转到App Store更新。但是,这个App是第一次上架,目前没有App Store的下载地址,当时为了测试,填写了蒲公英的项目托管地址,后来也忘了修改过来。解决方法是删除更新版本的代码,等待第一次上架后,获得App的下载链接后,再将代码加回来。这一次真的是踩了苹果底线,这次的审核时间更长,而且这个问题解决前,没有申请加急审核的资格。在更新这篇文章的时候,App依然在审核当中。

2. 1 Performance: Information Needed

Guideline 2.1 - Information Needed

We were unable to sign in to review your app with the demo account information you provided.
In order for us to continue the review, you will still need to provide a functional demo account that gives us access to all parts of your app so that we may fully review its content, features, and functionality. If your app is restricted to a specific location, you will still need to provide a whitelisted demo account that gives us access to your app. Note that providing a demo video showing your app in use is not enough for us to continue the review.
Next Steps
To help us proceed with the review of your app, please provide a user name and password in the App Review Information section for your app in App Store Connect. Please be sure to include content in your app that demonstrates the features and functionality available in your app.
To provide demo account information:
Log 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" box
Enter demo credentials in the "User name" and "Password" fields
Once you've completed all changes, click the "Save" button at the top of the Version Information page.

解决方法

    这个是没有提供正确的登录演示账号,这个App是一年前上了第一版,然后现在准备上第二版。时间长了,以前提供给苹果的测试账号不能用了,提供一个新的演示账号就行。

5. 1 Performance: Legal - Privacy

Guideline 5.1.1 - Legal - Privacy - Data Collection and Storage

We noticed that your app requests the user’s consent to access their camera but does not clarify the use of the camera in the applicable purpose string.
Next Steps
Please revise the relevant purpose string in your app’s Info.plist file to specify why the app is requesting access to the user's camera. You can modify your app's Info.plist file using the property list editor in Xcode.
To help users understand why your app is requesting access to their personal data, all permission request alerts in your app should specify how your app will use the requested feature.

解决方法

    这个问题以前也遇到过,最初始的版本是,开启相机、相册、麦克风等没有告知用户权限。在plist文件里面添加相关权限,例如“App需要您的同意,才能访问相机”。现在苹果还要求请求权限的同时,来说明用于什么服务。相关权限修改为“App需要您的同意,才能访问相机,以便上传您的用户头像或者商品评价图片。”

2. 5 Performance: Software Requirements

Guideline 2.5.1 - Performance - Software Requirements

We still noticed that your app uses HealthKit, but your app does not appear to include any primary features that require health or fitness data.
The intended use of HealthKit is to share health or fitness data with other apps or devices, and it should be used only in apps that require this data as a part of the app's core functionality.
Next Steps
To resolve this issue, please remove any HealthKit functionality from your app, as well as any references to this app’s interactivity with HealthKit from the app or its metadata.

解决方法

    接手这个App的时候,上个维护代码的人早就离职了。在App代码中全局搜索HealthKit,没有任何结果,比较郁闷。应用中没有集成HealthKit苹果的健康框架,检查podfile也没有发现相关第三方库,被这个问题卡了两次。第一次没有重新打包,直接回复苹果说明没有加入HealthKit到App中。然后被打回ㄟ( ▔, ▔ )ㄏ。后来发现plist文件中,写这个App的哥们真是小心,把相机、相册、摄像头、定位、日历、麦克风、通讯录、健康等权限全给加上了,真是哭欲无泪。删除健康的两条权限重新上架。

Privacy - Health Share Usage Description
Privacy - Health Update Usage Description

2. 3 Performance: Accurate Metadata

Guideline 2.3.6 - Performance - Accurate Metadata

The rating you have selected, 12+, is inconsistent with the content of your app. Since your app includes content and features involving alcohol products, it should be rated appropriately for this subject.

解决方法

    这个App是电商类的,但是有考虑到出现酒的可能,所以在应用分级中【使用或提及烟、酒或毒品】那一档选的是【偶尔/轻微的】。最终的年龄分级是12+。但是苹果提供的截图显示测试账号的首页全部都是酒类的商品,🙄🙄🙄。没有办法,将【使用或提及烟、酒或毒品】那一档选【频繁/强烈的】,最终的年龄分级是17+。不得不说,苹果对于App的分级扣得非常严。


1553246234308.jpg

文章会在以下渠道同步更新

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,837评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,551评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,417评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,448评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,524评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,554评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,569评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,316评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,766评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,077评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,240评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,912评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,560评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,176评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,425评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,114评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,114评论 2 352