I got my app rejected due to a
non-public api call.
I did a
grep on the project folder to locate those methods, as I found on another
StackOverflow question, but
grep did not provide anything.
grep -R '_NSErrorWithFilePath' *
grep -R '_NSErrorWithFilePathAndErrno' *
How can I find where those methods are located??
I tried to export the .app file and while grepping on it I find something
Binary file myAppName.app/Contents/Frameworks/libswiftFoundation.dylib matches
What's the best way to proceed to solve this?
Got this answer from the App Review Board:
Thank you for contacting the App Review Board.
App Review Board has completed their review of your appeal for your
app *** and determined that this version of your app is not in
violation of Guideline 2.5.1.
We will place the app back in review process shortly.
Thank you for your commitment to Mac app development.
Shin Y. App Review Board
So apparently it's a problem on their side, now my app is stuck "In Review" since this morning, I keep you posted.
My app was rejected for the same reason ~1h ago.
One of my apps was rejected a couple of weeks ago for the same reason but another framework. Back then it was a false alarm and I am 100% certain that is now.
I am asking Apple to check my app again.
Keep in mind that you do not have to use the private api in order to get the rejection. It is enough if the signature is the roughly same.
My app was rejected because it said that I was using the "CFHashByte" constructor which has the following signature:
CFHashBytes(uint8_t *bytes, CFIndex length)
My app had a function called "getBytes(UInt8 bytes, index: Int, length: Int)". The signature was similiar, especially the naming and the types. So maybe that's why the auto check detected this private API call.
So maybe check your app for a similiar signature. Otherwise, just write a message to Apple in iTunes Connect section where you received your error report.
TL;DR: Check your app for functions with similiar signatures.