Skip to content
This repository has been archived by the owner on May 1, 2024. It is now read-only.

[Xamarin.iOS] ITMS-90338: Non-public API usage #10517

Closed
ashaarmsm opened this issue Apr 30, 2020 · 7 comments
Closed

[Xamarin.iOS] ITMS-90338: Non-public API usage #10517

ashaarmsm opened this issue Apr 30, 2020 · 7 comments
Labels
a/webview p/iOS 🍎 s/needs-info ❓ A question has been asked that requires an answer before work can continue on this issue. t/question

Comments

@ashaarmsm
Copy link

Description

My app is getting rejected by apple due to following issues. I did the changes as highlighted here but still no luck. Can you please help me to fix.

ITMS-90338: Non-public API usage - The app references non-public selectors in yusnapPlus.iOS: applicationWillTerminate, localTarget, newSocketQueueForConnectionFromAddress:onSocket:, setButtonsView:, setDoubleTapGestureRecognizer:, setGrid:, setOrientation:animated:, setTextLabel:, socket:didConnectToHost:port:, socket:didReadPartialDataOfLength:tag:, socket:didReceiveTrust:completionHandler:, socket:didWritePartialDataOfLength:tag:, socket:shouldTimeoutReadWithTag:elapsed:bytesDone:, socket:shouldTimeoutWriteWithTag:elapsed:bytesDone:, socketDidCloseReadStream:, socketDidSecure:, terminateWithSuccess. 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/

Though you are not required to fix the following issues, we wanted to make you aware of them:

ITMS-90809: Deprecated API Usage - Apple will no longer accept submissions of new apps that use UIWebView as of April 30, 2020 and app updates that use UIWebView as of December 2020. Instead, use WKWebView for improved security and reliability. Learn more (https://developer.apple.com/documentation/uikit/uiwebview).

@ashaarmsm ashaarmsm changed the title ITMS-90338: Non-public API usage [Xamarin.iOS] ITMS-90338: Non-public API usage Apr 30, 2020
@jfversluis
Copy link
Member

Hi @ashaarmsm,

The first message indicates that you are using Apple private APIs, which is not allowed. Are you by any chance using App Center Test Cloud? A couple of these APIs look like they might be used by automated UI testing. This described that: https://docs.microsoft.com/en-us/appcenter/test-cloud/uitest/get-started-xamarin-forms#ios-application-project
 
For the UIWebView, this can have a lot of reasons, you already mentioned that you did the changes in the blog post. Please read through the following links that have additional info to see if any of this helps you:
 

You basically need 4 ingredients for UIWebView removal:

  • Use Forms 4.5 or later
  • Use Xamarin.iOS 13.10 or later
  • Linker Behavior to All/Full or SDK Only
  • Set the MTouch flag and make sure it’s for the right configuration

This all assumes that you do not reference UIWebView or WebViewRenderer yourself. If all this doesn't work, then you are most likely referencing a NuGet or other plugin that still has a reference. Make sure you update all of those.

@jfversluis jfversluis added a/webview p/iOS 🍎 s/needs-info ❓ A question has been asked that requires an answer before work can continue on this issue. t/question labels Apr 30, 2020
@xiufengpeng
Copy link

I have the exact same issue and have done all the steps you mentioned, still getting rejection from AppStore. I don't use any App center test cloud, and I am one Xamarin form 4.5.0.657

@jfversluis
Copy link
Member

@xiufengpeng What is the “exact same issue”? Can you post the contents of the message you got from Apple here?

@Kbmobi
Copy link

Kbmobi commented May 14, 2020

I have the exact same issue and have done all the steps you mentioned, still getting rejection from AppStore. I don't use any App center test cloud, and I am one Xamarin form 4.5.0.657

Make sure you are not setting the mtouch and linker behavior in Debug, and are actually doing it in Release mode...

@Luismimultimedia
Copy link

@jfversluis i did your guide to fix it but still not working. this issue is driving me crazy. It seems like other nugets have the UIWebView implement, i did the documentation steps and apple is still rejecting me the app. i´ve been searching where i have implemented UIWebView and i notice that for example Xamarin.Auth is implementing it. i also read this post:
https://levelup.gitconnected.com/how-to-find-and-remove-uiwebview-uses-in-your-ios-app-d9395f7baacc
where says that normally the sign and log with social networks could be causing those problems.
i dont know if i have to remove those nugets or what to do :(

@jfversluis
Copy link
Member

I'm sorry about that @Luismimultimedia

If you're using Xamarin.Auth you probably want to transition to Xamarin.Essentials for that now. They have the WebAuthenticator now that should do everything you need. Could you list the rest of the NuGets and versions that you have installed?

Or could you try this suggestion and post the results here?

@samhouts
Copy link
Member

Since we haven't heard from you in more than 30 days, we hope this issue is no longer affecting you. If it is, please reopen this issue and provide the requested information so that we can look into it further. Thank you!

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
a/webview p/iOS 🍎 s/needs-info ❓ A question has been asked that requires an answer before work can continue on this issue. t/question
Projects
None yet
Development

No branches or pull requests

6 participants