我们基于qtwebkit的应用程序在提交给mac应用商店后被苹果拒绝。拒绝的原因之一是使用非公开API。我已经在qtwebkit的源代码中发现了其中的六个。但我没有找到其余的地方。我搜索了我们的应用程序的源代码和QT的全部源代码。如何在Mac Qt App中找到非公开API的用法
六个非公开的API我在QtWebKit的来源发现的是:
CFHTTPCookieStorageSetCookieAcceptPolicy
CFURLCacheCopyResponseForRequest
CFURLResponseGetMIMEType
CFURLResponseCopySuggestedFilename
CFURLCacheSetMemoryCapacity
CFURLCacheSetDiskCapacity
这是侵犯苹果发现的完整列表:
使用非公开的API可导致如果用户体验不佳,应该在将来更改这些API,因此不允许。该 以下非公开的API都包含在你的应用程序:
NSAccessibilityCreateAXUIElementRef NSAccessibilityHandleFocusChanged NSAccessibilityUnregisterUniqueIdForUIElement NSAppKitPropertyCreator NSCarbonWindowPropertyTag NSMouseMovedNotification _NSDrawCarbonThemeBezel _NSDrawCarbonThemeListBox _NSPopUpCarbonMenu3 _NXShowKeyAndMain从框架:“/System/Library/Frameworks/AppKit.framework/Versions/C /了AppKit”
AXTextMarkerCreate AXTextMarkerGetBytePtr AXTextMarkerGetLength AXTextMarkerGetTypeID AXTextMarkerRangeCopyEndMarker AXTextMarkerRangeCopyStartMarker AXTextMarkerRangeCreate AXTextMarkerRangeGetTypeID CTLineCreateWithUniCharProvider CoreDragGetCurrentDrag CoreDragSetImage从框架: '/System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices'
GetNativeWindowFromWindowRef TSMGetInputSourceProperty从 框架: “/系统/库/框架/ Carbon.framework /版本/ A /炭”
CFReadStreamSignalEvent _CFAppVersionCheckLessThan _CFBundleSetDefaultLocalization _CFStringGetUserDefaultEncoding从框架: '/ System/Library/Frameworks/CoreFoundation。框架/版本/ A /的CoreFoundation”
CFHTTPCookieStorageCopyCookiesForURL CFHTTPCookieStorageDeleteCookie CFHTTPCookieStorageGetCookieAcceptPolicy CFHTTPCookieStorageSetCookieAcceptPolicy CFHTTPCookieStorageSetCookies CFURLCacheCopyResponseForRequest CFURLCacheSetDiskCapacity CFURLCacheSetMemoryCapacity CFURLRequestCreateMutableCopy CFURLResponseCopySuggestedFilename CFURLResponseGetExpectedContentLength CFURLResponseGetHTTPResponse CFURLResponseGetMIMEType CFURLResponseGetURL CFURLResponseSetExpectedContentLength CFURLResponseSetMIMEType _CFNetworkHTTPConnectionCacheGetLimit _CFNetw orkHTTPConnectionCacheSetLimit _CFURLCacheCopyCacheDirectory _CFURLRequestCreateArchiveList _CFURLRequestCreateFromArchiveList _CFURLResponseCreateArchiveList _CFURLResponseCreateFromArchiveList _CFURLResponseGetSSLCertificateContext _LSGetCurrentApplicationASN _LSSetApplicationInformationItem _kLSDisplayNameKey kCFStreamPropertyCONNECTAdditionalHeaders kCFStreamPropertyCONNECTProxy kCFStreamPropertyCONNECTProxyHost kCFStreamPropertyCONNECTProxyPort kCFStreamPropertyCONNECTResponse 从框架kCFURLResponseExpectedContentLengthUnknown: '/System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices'
NSPopAutoreleasePool NSPushAutoreleasePool从框架: '/ System/Library/Frameworks/F oundation.framework /版本/ C /基金会从框架
CARenderCGDestroy CARenderCGNew CARenderCGRender CARenderNotificationAddObserver CARenderNotificationRemoveObserver CARenderServerGetPort CARenderServerStart CARenderUpdateAddContext CARenderUpdateAddRect CARenderUpdateBegin CARenderUpdateFinish kCAContextPortNumber: '/System/Library/Frameworks/QuartzCore.framework/Versions/A/QuartzCore'
如果您在源代码中定义了与上述API相同名称的方法,我们建议更改您的方法名称,以便 他们不再与Apple的私有API冲突,以避免您的 应用程序在将来的提交中被标记。
此外,上述API中的一个或多个可能驻留在应用程序附带的 库中。如果您无权访问库的源代码,则可以使用“strings”或“otool”命令行工具搜索编译的二进制文件 。 “字符串”工具可以输出库调用的方法列表,“otool -ov”将输出Objective-C类结构及其定义的 方法。这些技术可以帮助您缩小有问题的代码所在的位置。
值得一提的是你正在使用哪个版本的Qt? –