Наше приложение на основе qtwebkit отклонено Apple после отправки в магазин приложений Mac. Одна из причин отказа - использование непубличного API. Мне удалось найти шесть из них в исходном коде qtwebkit. Но мне негде найти остальных. Я просмотрел исходный код нашего приложения и весь исходный код QT.
В исходном коде qtwebkit я нашел шесть непубличных API:
CFHTTPCookieStorageSetCookieAcceptPolicy
CFURLCacheCopyResponseForRequest
CFURLResponseGetMIMEType
CFURLResponseCopySuggestedFilename
CFURLCacheSetMemoryCapacity
CFURLCacheSetDiskCapacity
Вот полный список нарушений, обнаруженных Apple:
Использование непубличных 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 из фреймворка: '/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 kCFStreamProp ertyCONNECTProxyHost kCFStreamPropertyCONNECTProxyPort kCFStreamPropertyCONNECTResponse kCFURLResponseExpectedContentLengthUnknown из фреймворка: '/System/Library/Frameworks/CoreServices.framework/Versions/A/
NSPopAutoreleasePool NSPushAutoreleasePool из фреймворка: '/System/Library/Frameworks/Foundation.framework/Versions/C/Foundation'
CARenderCGDestroy CARenderCGNew CARenderCGRender CARenderNotificationAddObserver CARenderNotificationRemoveObserver CARenderServerGetPort CARenderServerStart CARenderUpdateAddContext CARenderUpdateAddRect CARenderUpdateBegin CARenderUpdateAddRect CARenderUpdateBegin CARenderUpdateontext framework/CoreCoreverSupport /
Если в исходном коде вы определили методы с теми же именами, что и упомянутые выше API, мы предлагаем изменить имена методов, чтобы они больше не конфликтовали с частными API Apple, чтобы ваше приложение не было помечено в будущих отправках.
Кроме того, один или несколько из вышеупомянутых API могут находиться в библиотеке, включенной в ваше приложение. Если у вас нет доступа к исходному тексту библиотеки, вы можете выполнить поиск в скомпилированном двоичном файле с помощью инструментов командной строки «strings» или «otool». Инструмент «strings» может выводить список методов, которые вызывает библиотека, а «otool -ov» выводит структуры классов Objective-C и их определенные методы. Эти методы могут помочь вам сузить круг проблем, связанных с кодом.