4

I'm developing an app using Xamarin Forms (Android and iOS). I have the first app version ready, and I'm trying to upload it to TestFlight in order to test the app with different users. In order to reduce the ipa size, I'm setting the linker behavior to "Link framework SDKs only".

enter image description here

After reducing the ipa size, I tried to upload the app to test flight but I got the next error message:

  • ITMS-90683: Missing Purpose String in Info.plist - Your app's code references one or more APIs that access sensitive user data. The app's Info.plist file should contain a NSCalendarsUsageDescription key with a user-facing purpose string explaining clearly and completely why your app needs the data.
  • ITMS-90809: Deprecated API Usage - New apps that use UIWebView are no longer accepted. Instead, use WKWebView for improved security and reliability.
  • ITMS-90683: Missing Purpose String in Info.plist - Your app's code references one or more APIs that access sensitive user data. The app's Info.plist file should contain a NSLocationAlwaysUsageDescription key with a user-facing purpose string explaining clearly and completely why your app needs the data.
  • ITMS-90683: Missing Purpose String in Info.plist - Your app's code references one or more APIs that access sensitive user data. The app's Info.plist file should contain a NSLocationWhenInUseUsageDescription key with a user-facing purpose string explaining clearly and completely why your app needs the data.

The problem is that I'm not using none of the items mentioned in the list. I'm not using WebView inside my app and I'm not requesting permissions of Location or Calendar. I know that those errors will disappear once I add the permission to inflo.plist, but I'm not using Location or Calendar.

How can I modify my application in order to remove those errors from TestFlight platform?

How can I notice which library (or NuGet) that I'm using is requesting any of those items?

Dani Garcia
  • 464
  • 1
  • 6
  • 18

3 Answers3

6

I had the same issues for my Xamarin project when first uploading to the AppStore: both TMS-90809 although only using WKWebView and practically ALL possible versions of ITMS-90683 (Contacts, Calendars, Music, Siri, Microphone, Location, Bluetooth) while none of this is used by my app.

So, adding the UsageDescriptions to plist would be really bad practice and I had no idea which of my nuget packages was or were causing this. I assume it could be Syncfusion or Google Cloud Translate, but couldn't really find confirmations on the web.

The simple resolution was, to enable Managed Linking, so all those parts creating the issues are not considered part of the app in the Apple validation process:

  • in the Xamarin iOS Project Options, go to "iOS Build"
  • select Configuraton "Release" and platform "iPhone"
  • as "Linker Behaviour" select "Link Framework SDKs Only" (or maybe Link All, if this also works for your app).

That resolved all the problems at once.

Kerry
  • 101
  • 1
  • 7
2

To get rid of this

ITMS-90809: Deprecated API Usage - New apps that use UIWebView are no longer accepted. Instead, use WKWebView for improved security and reliability.

Soultion - https://learn.microsoft.com/en-us/xamarin/ios/user-interface/controls/webview#uiwebview-deprecation

For the other issues

Soultion - https://learn.microsoft.com/en-us/xamarin/ios/app-fundamentals/security-privacy

You need to manually set a message for the device features that you will be consuming in your app.

For example Camera,Location,Calendar etc

0
  • ITMS-90683: You need add this lines in Info.plist

<key>NSLocationAlwaysUsageDescription</key> 
<string>We would like to know your location to find places near you</string>

<key>NSCalendarsUsageDescription</key>
<string>This app needs access to calendar when open</string>

<key>NSLocationWhenInUseUsageDescription</key>
<string>We would like to know your location to find places near you</string>
  • ITMS-90809:

    1. Update the Xamarin.Forms version
    2. You can go to your iOS project, open the project properties and add this flag in the additional mtouch arguments field: --optimize=experimental-xforms-product-type this flag works together with the Linker Behavior set to SDK Only or All.

https://devblogs.microsoft.com/xamarin/uiwebview-deprecation-xamarin-forms/