Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

React Native binary rejected by Apple for using non-public API

From Apple
Performance - 2.5.1

Your app uses or references the following non-public APIs:

: setResult: 

The use of non-public APIs is not permitted on the App Store because it can lead to a poor user experience should these APIs change.

I search the term setResult and I think this belongs to the facebook login package that I was using

xxxx$ grep -Rnis 'setResult:' *
Binary file ios/FBSDKCoreKit.framework/FBSDKCoreKit matches
Binary file node_modules/react-native-facebook-login/FacebookSDK/FBSDKCoreKit.framework/FBSDKCoreKit matches

Does anyone know how to solve this? Thanks.

like image 547
Shih-Min Lee Avatar asked Sep 06 '16 17:09

Shih-Min Lee


People also ask

Will Apple reject React Native apps?

There's no reason to panic if your application uses React Native. There are no circumstances under which Apple would withdraw consent for RN apps, as they would also have to ban other web-mobile frameworks like Ionic, as well as standard Internet browsers, as they all fall into the same category.

Does Apple allow React Native?

React is very simple and efficient for creating large applications. React Native enables you to use React to build mobile apps that work on both Android and iOS.

Will Facebook stop supporting React Native?

As of January 19, 2021, Facebook React Native SDK will no longer be officially supported by Facebook.

Can I use React Native with Swift?

The main difference between React Native and Swift is that React Native is best for cross-platform development, while Swift is for building iOS apps. Thus, you may develop an Android application in Java or Kotlin, for example, and choose Swift and Objective-C for iOS only.


2 Answers

I'd recommend filing an issue on their Github project. They shouldn't be using private APIs and I'm sure would want to know that it's resulted in an App Store rejection.

EDIT: OP posted an issue and it appears they aren't the only one with that issue.

https://github.com/magus/react-native-facebook-login/issues/155

like image 101
Jamon Holmgren Avatar answered Oct 18 '22 04:10

Jamon Holmgren


We had the same problem. Apple rejected our app because of a method named setResult that is part of the FacebookSDK. It is not a call to a non-public API, but just a method that has coincidentally the same name.

Someone filed a bug at developers.facebook.com. This is Facebook's response:

Hi all,

I've checked with our Mobile SDK team and also checked this myself personally in our SDK source

The call to setResult in FBSDKCoreKit is not to a private API, it's to this method from the Bolts Framework:

https://boltsframework.github.io/docs/ios/Classes/BFTaskCompletionSource.html#//api/name/setResult:

At this time there aren't any plans to change our usage of this method, and it appears to be being flagged incorrectly by whatever Apple are using to detect private API usage

We recommend you reach out to Apple and have them check your app again and verify that there isn't actually private API usage

I've also asked if our mobile SDK team can contact Apple about this, but I'm unsure if that's something we can do

Regards, Stephen

The bug report: https://developers.facebook.com/bugs/294032807641661/

We successfully appealed to the App Review Board, by explaining why it is not a call to a private API.

like image 1
Apfelsaft Avatar answered Oct 18 '22 02:10

Apfelsaft