The App References Non-Public Selector in Id (Facebook Sdk iOS)

The app references non-public selector in id (Facebook SDK iOS)

This problem happens because of the Facebook SDK for iOS.

Application Loader forbids the use of the variable "id" from any FBGraphUser related class (maybe others variables too, didn't test) - e.g. :

id<FBGraphUser> friend
id<FBGraphUserExtraFields>user

Facebook is informed about this problem as of january 2013 : Bug Report

The workaround for the moment is to use these:

[user objectForKey:@"id"]
[friend objectForKey:@"id"]

instead of user.id and friend.id as shown in the different Facebook samples.

The app references non-public selectors with Facebook SDK

Wait a few minutes until the status clears. Then reject it under "Binary Details" in iTunesConnect.

Most likely iTunesConnect cannot flag it for waiting for review until some processing is done, worst case a manual action by Apple is done (with regards to the warning). Not much you can do.

The app references non-public selectors in Payload/ Appname .app/ App name : decoder

You may get this warning just for using a selector in your own code or third party code that has the same name as some selector that is marked as non-public. Happens to me all the time. Never got rejected for it.

By "same name" i mean just something as simple as you having an object with this selector:

-(id) XYZKMyClass doSomethingFancy:(id) toThis

...and there being a selector like this for an internal Apple functionality

-(id) ApplesClass  doSomethingFancy:(id) toSomething

So: What it seems they are looking for is the signature -(id) doSomethingFancy:(id). You can see how it's very easy to accidentally bump up against this.

Presumably they perform a deeper check at the App Store Police HQ, and determine that the flagged selector is in your code, and hence OK.

The app references non-public selectors callWithArguments:, estimatedProgress, evaluateScript:

Message from Apple: "The issue has been resolved on the app validation backend. Please try resubmitting. Sorry for the trouble."

If you're seeing this issue in the future, here's how to address "non-public selectors" errors in general.

If you're very lucky, you may find that despite the scary error message in Xcode, Apple will accept your binary anyway, and it will appear in App Store Connect for you to submit it.

Barring that, you may be able to search your own source code to find references to these forbidden selectors. But, it's much more common to find that some third-party library (a CocoaPod or Swift package you're using) is responsible.

Typically the only way to diagnose the issue is to try removing third-party libraries from your code, one by one, until the error goes away. Then, once you've found the library responsible, file a bug against the library developer. Once the library fixes the issue, you'll have to upgrade to a newer version of the library that stops using private selectors.

the app references non-public selectors in payload/appname.app/appname: _terminateWithStatus

You can't remove this warning. You may get this warning just for using a selector in your own code or third party code(may be because of facebook sdk) that has the same name as some selector that is marked as non-public. Happens to me all the time. Never got rejected for it. So you won't worry about this warning. See this Ref. , Ref2

And also see this stack question to avoid rejection, find and remove unwanted framework.

Cannot upload iOS app with Facebook SDK 3.0 because references non-public selectors

I've retry to upload it today and everything is fine now. Probability Apple has fixed something.



Related Topics



Leave a reply



Submit