BranchMetrics / sdk-release

TUNE iOS, Android, and Windows native SDKs
https://developers.tune.com/sdk/quick-starts/
GNU General Public License v3.0
55 stars 46 forks source link

apple Review Reject "non-public API" #22

Closed c3stream closed 8 years ago

c3stream commented 8 years ago
2. 5 PERFORMANCE: SOFTWARE REQUIREMENTS
Performance - 2.5.1

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

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.
grep -Rnis 'activateApp' *
Binary file Pods/Tune/Tune.framework/Tune matches

Please, fix it.

c3stream commented 8 years ago
#pragma clang diagnostic ignored "-Wundeclared-selector"
        selMethod = @selector(activateApp);
harshal-hasoffers commented 8 years ago

The activateApp selector reference is in relation to the optional Facebook SDK framework, and not in relation to any private Apple framework. Since FB framework is optional, the TUNE SDK dynamically checks if the FB framework exists. You can find the open source code here: https://github.com/MobileAppTracking/sdk-release/blob/master/sdk-ios/Tune/Tune/TuneFBBridge.m#L105

Please let us know if this explanation is enough to get your app submission unblocked. Meanwhile, tomorrow's scheduled SDK release will also include a fix for this issue. We plan to replace the activateApp selector reference with split strings, so that it won't show up in the strings/otool/grep checks.

rilakkuma commented 8 years ago

@harshal-hasoffers 2 days ago Apple also rejected my app with the same reason and I replied that the Tune SDK only invokes activateApp if the Facebook login is enabled (which I think is similar to the explanation you advised). However, they still rejected it.

Hello, Thank you for your response. Please update any third party framework or use alternative means, in order to resolve this issue.

Since my app has been rejected once, I think it's sort of flagged already so they will be more strict when checking my app next time. I am worried if split strings would be able to solve this. Is it possible to completely remove activateApp from the source?

harshal-hasoffers commented 8 years ago

@rilakkuma We recently submitted a sample app to App Store with that fix and it was approved without issues. Also, there's another such usage in the SDK where the string has been split to avoid issues: https://github.com/MobileAppTracking/sdk-release/blob/master/sdk-ios/Tune/Tune/TuneAppDelegate.m#L93-L97 We are fairly certain that this should remove the activateApp string related submission issues. So, we plan to include the split string fix in today's SDK release.

harshal-hasoffers commented 8 years ago

v4.9.0 is now released.

rilakkuma commented 8 years ago

@harshal-hasoffers Thanks!

clevekim00 commented 8 years ago

@harshal-hasoffers Thanks!!

clevekim00 commented 8 years ago

Hi. Our app got approval from apple. Thanks.