最近一週上架3個不一樣類型的App,其中2個還在審覈中,不一樣的理由被拒絕屢次,被蘋果爸爸折磨的死去活來。下面記錄這些心酸的歷程。ios
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.git
這個prefs:root
問題以前也有遇到過,使用的選擇圖片第三方庫TZImagePickerController歷史版本裏面有關於判斷iOS 8.0 版本如下的代碼有使用到prefs:root
。直接pod
更新到最新的版本就能夠。github
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.bash
這個徹底是本身的鍋,打包的時候環境沒有切換正式環境,測試環境的商品圖片都是佔位圖,切換到正式環境就行。網絡
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.app
蘋果表示6.5英寸和5.8英寸的應用截圖不許確,沒有反映出App的價值和功能。我當時上傳的截圖是這樣的,是UI設計師給出的應用輪播圖。實際上App的截圖和設計圖沒有多少差異,可是爲了上架,仍是用模擬器把每一個尺寸的真實截圖保存下來,傳上去。 框架
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.ide
蘋果提供的截圖是搜索頁面除了輸入框,沒有任何搜索結果。蘋果認爲是網絡問題。我沒有從新打包提交,直接在底下的輸入框回覆是輸入的關鍵字沒有匹配任何商品,因此不顯示。而後提供了相關搜索的截圖。次日就直接上架經過了,蘋果仍是蠻好說話的。 測試
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.fetch
被這個問題卡了兩次,第一次還覺得是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
}
}
複製代碼
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依然在審覈當中。
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是一年前上了初版,而後如今準備上第二版。時間長了,之前提供給蘋果的測試帳號不能用了,提供一個新的演示帳號就行。
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須要您的贊成,才能訪問相機,以便上傳您的用戶頭像或者商品評價圖片。」
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
複製代碼
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的分級扣得很是嚴。
文章會在如下渠道同步更新