ITMS-90338: Non-public API usage automatic refuse

Hello,


We contacted Apple Developer Support due to an automatic message we receive when trying to publish a new version of our app



Dear Developer,
We identified one or more issues with a recent delivery for your app. Please correct the following issues, then upload again. 
ITMS-90338: Non-public API usage - The app references non-public selectors in Idealys: applicationWillTerminate,
 ddSetLogLevel:, localTarget, newSocketQueueForConnectionFromAddress:onSocket:, setOrientation:animated:,
 socket:didConnectToHost:port:, socket:didReadPartialDataOfLength:tag:, socket:didReceiveTrust:completionHandler:,
 socket:didWritePartialDataOfLength:tag:, socket:shouldTimeoutReadWithTag:elapsed:bytesDone:, 
socket:shouldTimeoutWriteWithTag:elapsed:bytesDone:, socketDidCloseReadStream:, socketDidSecure:,
 terminateWithSuccess, webSocket:didReceiveMessage:, webSocketDidOpen:

 If method names in your source code match the private Apple APIs listed above,
 altering your method names will help prevent this app from being flagged in future submissions.
 In addition, note that one or more of the above APIs may be located in a static library that was included with your app.
 If so, they must be removed. For further information, visit the Technical Support Information at http://developer.apple.com/support/technical/ 

Best regards,

The App Store Team


The problem is we do not understand what the issue is even when reading your automatic message.


How can we debug this ?

How can we identify the source of the problem ?

Do you have any idea of what the problem is ?


What we tried :

  1. We tried to re-publish the application we currently have on your store (production) with different build number => App rejected with the same automatic message ;
  2. We tried to disable one by one every cordova plugin (see the list below) => App rejected with the same automatic message ;
  3. We tried to look for every reference listed in the automatic message using XCode and grep => We found none of those ;
  4. We tried to upgrade cordova-ios => App rejected with the same automatic message ;


XCode version : 11.0

MacOS version : 10.14.6

Cordova-ios version : 4.5.5

Ionic version : 1


Best regards,

Answered by App Store Connect Engineer in 715975022

The issue has been resolved on the app validation backend. Please try resubmitting. Sorry for the trouble.

I have some issues here too

I am having similar issue.

I'm having the same error only on the Mac Catalyst build with no significant changes to my source code:

ITMS-90338: Non-public API usage - The app contains or inherits from non-public classes in Contents/PlugIns/BookTrackWidgetsExtension.appex/Contents/MacOS/BookTrackWidgetsExtension: UIPrintPageRenderer, UISimpleTextPrintFormatter ,The app contains or inherits from non-public classes in Contents/PlugIns/BookTrackIntentHandler.appex/Contents/MacOS/BookTrackIntentHandler: UIPrintPageRenderer, UISimpleTextPrintFormatter ,The app contains or inherits from non-public classes in Contents/MacOS/Book Track: UIPrintPageRenderer, UISimpleTextPrintFormatter . If method names in your source code match the private Apple APIs listed above, altering your method names will help prevent this app from being flagged in future submissions. In addition, note that one or more of the above APIs may be located in a static library that was included with your app. If so, they must be removed. For further information, visit the Technical Support Information at http://developer.apple.com/support/technical/

What could I do?

Having the same issue with flutter ITMS-90338: Non-public API usage - The app references non-public symbols in Frameworks/Flutter.framework/Flutter: _IOIteratorNext, _IOObjectRelease, _IORegistryEntryCreateCFProperties, _IORegistryEntryGetChildIterator, _IOServiceGetMatchingServices, _IOServiceNameMatching, _kIOMasterPortDefault.

I also got problem ITMS-90338: Non-public API usage - The app references non-public symbols in Frameworks/Flutter.framework/Flutter: _IOIteratorNext, _IOObjectRelease, _IORegistryEntryCreateCFProperties, _IORegistryEntryGetChildIterator, _IOServiceGetMatchingServices, _IOServiceNameMatching, _kIOMasterPortDefault. If method names in your source code match the private Apple APIs listed above, altering your method names will help prevent this app from being flagged in future submissions. In addition, note that one or more of the above APIs may be located in a static library that was included with your app. If so, they must be removed. For further information, visit the Technical Support Information at http://developer.apple.com/support/technical/

MacOS: 12.4 Xcode: 13.4.1

Seeing similar here, I am right now getting "ITMS-90338: Non-public API usage" because UIPrintInfo, UIPrintInteractionController are used, which is definitely ridiculous, both are public APIs under UIKit!

I have the same issue! Mac Catalyst

ITMS-90338: Non-public API usage - The app contains or inherits from non-public classes in Contents/Frameworks/CordovaPlugins.framework/Versions/A/CordovaPlugins: UIMarkupTextPrintFormatter, UIPrintFormatter, UIPrintInfo, UIPrintInteractionController, UIPrintPageRenderer, UIPrintPaper, UIPrinter, UIPrinterPickerController, UISimpleTextPrintFormatter . If method names in your source code match the private Apple APIs listed above, altering your method names will help prevent this app from being flagged in future submissions. In addition, note that one or more of the above APIs may be located in a static library that was included with your app. If so, they must be removed. For further information, visit the Technical Support Information at http://developer.apple.com/support/technical/

XCode 13.4.1 MacOs: 12.4

We are facing the same issue with today's submission. Is this really resolved for all cases?

ITMS-90338: Non-public API usage - The app contains one or more corrupted binaries. Rebuild the app and resubmit.. If method names in your source code match the private Apple APIs listed above, altering your method names will help prevent this app from being flagged in future submissions. In addition, note that one or more of the above APIs may be located in a static library that was included with your app. If so, they must be removed. For further information, visit the Technical Support Information at http://developer.apple.com/support/technical/

ITMS-90338: Non-public API usage - The app contains one or more corrupted binaries. Rebuild the app and resubmit.. If method names in your source code match the private Apple APIs listed above, altering your method names will help prevent this app from being flagged in future submissions. In addition, note that one or more of the above APIs may be located in a static library that was included with your app. If so, they must be removed. For further information, visit the Technical Support Information at http://developer.apple.com/support/technical/

I have a similar problem with Flutter. When I removed the frameworks in the project and set 'enable bitcode', the problem was solved. However, these frameworks are important to the project, I can't delete them just because of this apple problem. Is there a way to solve the problem with 'disable bitcode' still set?

Same issue here, but unlike others I use Xamarin framework and the list of API is a bit more extended

ITMS-90338: Non-public API usage - The app references non-public selectors in OPRMoblie.iOS: accumulatorPrecisionOption, alignCorners, assetForIdentifier:, attackTime, batchStart, bytesPerImage, calibrationMode, checkFocusGroupTreeForEnvironment:, classesLossDescriptor, clipRect, colorTransform, commissioningComplete:, computeStatistics, confidenceLossDescriptor, curveType, deactivate, encodeToCommandBuffer:sourceTexture:destinationTexture:, envelope, forward, frontFacingWinding, gradientForWeights, initWithBuffer:offset:, initWithCoder:device:, initWithCommandBuffer:, initWithDevice:descriptor:, initWithEngine:, initWithFlags:, initWithHandle:, initWithLearningRate:gradientRescale:applyGradientClipping:gradientClipMax:gradientClipMin:regularizationType:regularizationScale:, initWithResources:, initWithUpdateMode:, inputFeatureChannels, instanceBuffer, isBackwards, isTemporary, kernelSize, maskBuffer, maskBufferOffset, mixer, neuronType, numberOfAnchorBoxes, numberOfClasses, numberOfDimensions, numberOfImages, numberOfLayers, numberOfRegions, outputFeatureChannels, p0, padding, playbackMode, pm, prepareState, readCount, rebuild, regions, releaseTime, resizeHeight, resizeWidth, resourceCount, resourceList, resourceSize, resultState, rowBytes, scaleFactorX, scaleFactorY, scaleTransform, setBatchStart:, setBeta:, setButtonsView:, setBytesPerImage:, setBytesPerRow:, setClipRect:, setCurveType:, setDoubleTapGestureRecognizer:, setFirst:, setGradientClipMax:, setGradientClipMin:, setGrid:, setInputFeatureChannels:, setInputWeights:, setLongPressRecognizer:, setLossType:, setMaskBuffer:, setMaskBufferOffset:, setNormalize:, setNumberOfClasses:, setNumberOfDimensions:, setNumberOfImages:, setOutputFeatureChannels:, setP0:, setPadding:, setPattern:, setPlaybackMode:, setPm:, setReadCount:, setRescore:, setRowBytes:, setScaleTransform:, setSourceSize:, setStopGradient:, setTextLabel:, shapes, sigma, sleep:, soundEvents, sourceSize, startWithCompletion:, stopGradient, test:, thresholdValue, toggle:, transpose, unmute, vectors. 

Honestly, I didn't add any package to the project since last version and suddenly all this appeared and I have no idea what am I even supposed to remove or change to fix this. Is this actually issue on our side? Seems like this issue resurfaced week ago judging from replies here and no answer been given. Do we just need to wait?

Okay I figured out how to solve this for cross-platform apps. In Target -> Build Settings -> Other Linker Flags, remove -interposable. Rebuild app

I am experiencing the same issue while using the Wikitude SDK with Unity:

TMS-90338: Non-public API usage - The app references non-public symbols in Frameworks/WikitudeSDK.framework/WikitudeSDK: _TIFFDataWidth, _TIFFFieldDataType, _TIFFFieldName, _TIFFFieldPassCount, _TIFFFieldReadCount, _TIFFFieldTag, _TIFFFieldWithTag, _TIFFGetField, _TIFFGetFieldDefaulted, _TIFFMergeFieldInfo, _TIFFSetField, _TIFFSetTagExtender, __TIFFDataSize, __TIFFfree, __TIFFmalloc

Is there any update on this issue? Its impossible for us to remove the library and we are unable to push any updates for the app.

We are having the similar issue with an old freetype framework. It seems a server-side problem on the App Store Connect. We made a Apple Developer Technical Support request and got a reply that they were unable to help with this problem and referred us to the App Store Connect team.

Still getting this issue with Expo

We are facing the same issue with Blackberry Dynamics Framework. We have opened an issue with Apple and they acknowledge they are looking into it. The problem is they have been looking into it for more than 15 days now!

ITMS-90338: Non-public API usage automatic refuse
 
 
Q