NAXAM/braintree-ios-binding

App Store Connect Release not possible

stoppi opened this issue · 10 comments

I am using the latest versions of Naxam.BraintreeDropIn.iOS (8.1.1) and Naxam.BraintreePayPal.iOS (4.35.0) in my Xamarin app. Everything works fine, but Apple does not accept my app bundle:

"ITMS-90338: Non-public API usage - The app references non-public selectors in App: setErrorDetail:, setTransactionID:. 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/"

Prior versions are working and I can upload them to the app store as well.
I searched for the mentioned symbols (setErrorDetails and setTransactionID) both are contained in the following assembly:
Naxam.CardinalMobile.iOS.dll

@stoppi ,

Thank you very much for your info.

I think we might need to contact with braintree and/or CardinalMobile for support.

The binding library itself doesn't interact with any Apple API.

Would you mind contacting Braintree and/or CardinalMobile?

Cheers.

@tuyen-vuduc sure, I will get in touch with them.

Hi @tuyen-vuduc , I found the problem causing the failing upload to the App Store.
In the Naxam.CardinalMobile.iOS assembly, there is the ErrorMessage interface exporting ErrorDetail and TransactionId.
If I remove those two, I have no problems publishing to the app store, but I guess they are needed somewhere. Can you check this?
Thanks

Hi @tuyen-vuduc,

We too are facing same issue. When we try to upload our app to App Store we get error as,
ITMS-90338: Non-public API usage - The app references non-public selectors in: setErrorDetail:, setTransactionID:.

Could you please help us in this regard?
Thanks

Hi @stoppi,

How do you know if above properties cause the issue?

Those properties are defined by the SDK. Probably somewhere else, I think.

Could you share the full message, @stoppi, @hemalathaGithub ?

Regards.

@tuyen-vuduc, I downloaded your code, removed the exports for ErrorDetail and TransactionId on the ErrorMessage interface in Naxam.CardinalMobile.iOS and used those new assemblies in my app for the release in the App Store, that worked without problems. Braintree was able to release an App with the latest version of CardinalMobile to the App Store, so somehow the Xamarin SDK and therefore Naxam.CardinalMobile.iOS seems to be the problem.

here is the prior full message from Apple:

"We identified one or more issues with a recent delivery for your app, "MyAppName" 1.0.47 (1.0.47). Please correct the following issues, then upload again.

ITMS-90338: Non-public API usage - The app references non-public selectors in 'MyAppName': setErrorDetail:, setTransactionID:. 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/

Best regards,

The App Store Team"

@stoppi ,

Thank you very much for your info.

I got the point and found the way to fix it.

Would you mind sharing your removals so I could combine in case?

Cheers.

@stoppi , @hemalathaGithub ,

Patched version was released.

Plz check it out here.

Cheers.

New release is working as expected!

Thank you very much @tuyen-vuduc

Hiya, don't know if you'd want a new issue creating or not but I am having the same issue CardinalMobile build but its a little different.

I am using the BraintreePaymentFlow.iOS 4.35.0.1 which references CardinalMobile.iOS 2.2.3.1 and if i submit my app like that it gets rejected instantly as per the initial comment on here.

If I just update the CardinalMobile.iOS version to 2.2.3.2 my app no longer gets rejected but instantly crashes when launching.

Does the BraintreePaymentFlow.iOS also need updating to use the new version of Cardinal??