Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Binary rejected for use of private API "transform:" in GDTCORTransformer #5568

Closed
steveshepard opened this issue May 11, 2020 · 7 comments
Closed
Assignees

Comments

@steveshepard
Copy link

[REQUIRED] Step 1: Describe your environment

  • Xcode version: 11.4.1
  • Firebase SDK version: 6.24.0
  • Firebase Component: GoogleDataTransport
  • Component version: 6.1.0
  • Installation method: CocoaPods

[REQUIRED] Step 2: Describe the problem

Apple rejected a binary built with the Firebase SDK.

Steps to reproduce:

  1. Compile and link with the SDK.

  2. Submit the binary for review.

  3. Receive a rejection for using the private API "transform:"

Relevant Code:

The following code from GDTCORTransformer is the culprit:

      if ([transformer respondsToSelector:@selector(transform:)]) {
        GDTCORLogDebug(@"Applying a transformer to event %@", event);
        transformedEvent = [transformer transform:transformedEvent];
        if (!transformedEvent) {
          completion(NO, nil);
          return;
        }
      } else {
        GDTCORLogError(GDTCORMCETransformerDoesntImplementTransform,
                       @"Transformer doesn't implement transform: %@", transformer);
        completion(NO, nil);
        return;
      }

The transform: method doesn't seem to be implemented anywhere in the SDK. Is this, in fact, using private API?

@google-oss-bot
Copy link

I found a few problems with this issue:

  • I couldn't figure out how to label this issue, so I've labeled it for a human to triage. Hang tight.
  • This issue does not seem to follow the issue template. Make sure you provide all the required information.

@morganchen12
Copy link
Contributor

This seems like a false positive auto-reject from the App Store scanner. @steveshepard can you try appealing your app's rejection with the note that transform: in this case is a selector declared by a public Firebase dependency and not a private API?

@steveshepard
Copy link
Author

Not sure if that will suffice given this:

"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/"

@steveshepard
Copy link
Author

Can you point me to the legit transform: implementation? Renaming that, at least temporarily, would also solve the problem.

@mikehaney24
Copy link
Contributor

The header declaration is here: https://github.com/firebase/firebase-ios-sdk/blob/master/GoogleDataTransport/GDTCORLibrary/Public/GDTCOREventTransformer.h

This seems like a false positive rejection, I'd try appealing to Apple. Thousands of apps have shipped using these APIs. We'll try to see if there's anything we can do to help on our end.

@steveshepard
Copy link
Author

Hi @mikehaney24,

Thanks for the reply. Yes, I saw the interface. I didn't see an implementation in the SDK though, which made me wonder.

I did submit another build this morning and it wasn't flagged, so perhaps this rejection was the result of a new check they rolled back. Hard to believe that there aren't tons of apps that declare a "transform:" method.

@mikehaney24
Copy link
Contributor

Indeed, -transform seems like probably a common method. Thanks for following up to let us know!

@firebase firebase locked and limited conversation to collaborators Jun 12, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

5 participants