私たちのqtwebkitベースのアプリケーションは、macappstoreに送信された後にアップルによって拒否されました。拒否される理由の1つは、非公開APIの使用です。qtwebkitのソースコードでそのうちの6つを見つけました。しかし、私には残りを見つける場所がありません。アプリケーションのソースコードとQTのソースコード全体を検索しました。
qtwebkitソースで見つけた6つの非公開APIは次のとおりです。
CFHTTPCookieStorageSetCookieAcceptPolicy
CFURLCacheCopyResponseForRequest
CFURLResponseGetMIMEType
CFURLResponseCopySuggestedFilename
CFURLCacheSetMemoryCapacity
CFURLCacheSetDiskCapacity
アップルによって発見された違反の完全なリストは次のとおりです。
非公開APIを使用すると、これらのAPIが将来変更された場合にユーザーエクスペリエンスが低下する可能性があるため、許可されていません。次の非公開APIがアプリケーションに含まれています。
NSAccessibilityCreateAXUIElementRef NSAccessibilityHandleFocusChanged NSAccessibilityUnregisterUniqueIdForUIElement NSAppKitPropertyCreator NSCarbonWindowPropertyTag NSMouseMovedNotification _NSDrawCarbonThemeBezel _NSDrawCarbonThemeListBox _NSPopUpCarbonMenu3 _NXShowKeyAndMain from the framework:'/System/Library/Frameworks
AXTextMarkerCreate AXTextMarkerGetBytePtr AXTextMarkerGetLength AXTextMarkerGetTypeID AXTextMarkerRangeCopyEndMarker AXTextMarkerRangeCopyStartMarker AXTextMarkerRangeCreate AXTextMarkerRangeGetTypeID CTLineCreateWithUniCharProvider CoreDragGetCurrentDrag CoreDragSetImage from the framework:'/System/Library/Frame
フレームワークからのGetNativeWindowFromWindowRefTSMGetInputSourceProperty:'/System/Library/Frameworks/Carbon.framework/Versions/A/Carbon'
CFReadStreamSignalEvent _CFAppVersionCheckLessThan _CFBundleSetDefaultLocalization _CFStringGetUserDefaultEncodingフレームワークから:'/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation'
CFHTTPCookieStorageCopyCookiesForURL CFHTTPCookieStorageDeleteCookie CFHTTPCookieStorageGetCookieAcceptPolicy CFHTTPCookieStorageSetCookieAcceptPolicy CFHTTPCookieStorageSetCookies CFURLCacheCopyResponseForRequest CFURLCacheSetDiskCapacity CFURLCacheSetMemoryCapacity CFURLRequestCreateMutableCopy CFURLResponseCopySuggestedFilename CFURLResponseGetExpectedContentLength CFURLResponseGetHTTPResponse CFURLResponseGetMIMEType CFURLResponseGetURL CFURLResponseSetExpectedContentLength CFURLResponseSetMIMEType _CFNetworkHTTPConnectionCacheGetLimit _CFNetworkHTTPConnectionCacheSetLimit _CFURLCacheCopyCacheDirectory _CFURLRequestCreateArchiveList _CFURLRequestCreateFromArchiveList _CFURLResponseCreateArchiveList _CFURLResponseCreateFromArchiveList _CFURLResponseGetSSLCertificateContext _LSGetCurrentApplicationASN_LSSetApplicationInformationItem _kLSDisplayNameKey kCFStreamPropertyCONNECTAdditionalHeaders kCFStreamPropertyCONNECTProxy kCFStreamPropertyCONNECTProxyHost kCFStreamPropertyCONNECTProxyPort kCFStreamPropertyCONNECTResponse kCFURLResponseExpectedContentLengthフレームワークから不明:'/System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices'
フレームワークからのNSPopAutoreleasePoolNSPushAutoreleasePool:'/System/Library/Frameworks/Foundation.framework/Versions/C/Foundation'
CARenderCGDestroy CARenderCGNew CARenderCGRender CARenderNotificationAddObserver CARenderNotificationRemoveObserver CARenderServerGetPort CARenderServerStart CARenderUpdateAddContext CARenderUpdateAddRect CARenderUpdateBegin CARenderUpdateFinish kCAContextPortNumber from the framework:'/System/Library/Frameworks/QuartzCore.framework/Version
ソースコードで上記のAPIと同じ名前のメソッドを定義している場合は、メソッド名を変更して、アプリケーションが将来の送信でフラグが立てられないように、AppleのプライベートAPIと衝突しないようにすることをお勧めします。
さらに、上記のAPIの1つ以上が、アプリケーションに含まれているライブラリに存在する場合があります。ライブラリのソースにアクセスできない場合は、「strings」または「otool」コマンドラインツールを使用して、コンパイルされたバイナリを検索できる場合があります。「文字列」ツールはライブラリが呼び出すメソッドのリストを出力でき、「otool-ov」はObjective-Cクラス構造とそれらの定義されたメソッドを出力します。これらの手法は、問題のあるコードが存在する場所を絞り込むのに役立ちます。