My iOS utility, developed with Xamarin.Kinds for about 3 years, is revealed within the AppStore. Once I tried to replace this utility up to now months, I acquired an e-mail from the App Retailer join as follows.
ITMS-90683: Lacking function string in Data.plist – Your app’s code
references a number of APIs that entry delicate consumer information, or the
app has a number of entitlements that allow such entry. The
Data.plist file for the “AppName.iOS.app” bundle ought to include a
NSContactsUsageDescription key with a user-facing function string
explaining clearly and fully why your app wants the information. In case your
app helps a number of locales, you’re now required to offer a
function string worth within the Data.plist file along with a legitimate
localized string throughout every of your app’s localization folders. If
you’re utilizing exterior libraries or SDKs, they could reference APIs that
require a function string. Whereas your app won’t use these APIs, a
function string continues to be required. For particulars, go to:
https://developer.apple.com/documentation/uikit/protecting_the_user_s_privacy/requesting_access_to_protected_resources.ITMS-90683: Lacking function string in Data.plist – Your app’s code
references a number of APIs that entry delicate consumer information, or the
app has a number of entitlements that allow such entry. The
Data.plist file for the “AppName.iOS.app” bundle ought to include a
NSMicrophoneUsageDescription key with a user-facing function string
explaining clearly and fully why your app wants the information. In case your
app helps a number of locales, you’re now required to offer a
function string worth within the Data.plist file along with a legitimate
localized string throughout every of your app’s localization folders. If
you’re utilizing exterior libraries or SDKs, they could reference APIs that
require a function string. Whereas your app won’t use these APIs, a
function string continues to be required. For particulars, go to:
https://developer.apple.com/documentation/uikit/protecting_the_user_s_privacy/requesting_access_to_protected_resources.ITMS-90683: Lacking function string in Data.plist – Your app’s code
references a number of APIs that entry delicate consumer information, or the
app has a number of entitlements that allow such entry. The
Data.plist file for the “AppName.iOS.app” bundle ought to include a
NSAppleMusicUsageDescription key with a user-facing function string
explaining clearly and fully why your app wants the information. In case your
app helps a number of locales, you’re now required to offer a
function string worth within the Data.plist file along with a legitimate
localized string throughout every of your app’s localization folders. If
you’re utilizing exterior libraries or SDKs, they could reference APIs that
require a function string. Whereas your app won’t use these APIs, a
function string continues to be required. For particulars, go to:
https://developer.apple.com/documentation/uikit/protecting_the_user_s_privacy/requesting_access_to_protected_resources.ITMS-90683: Lacking function string in Data.plist – Your app’s code
references a number of APIs that entry delicate consumer information, or the
app has a number of entitlements that allow such entry. The
Data.plist file for the “AppName.iOS.app” bundle ought to include a
NSSiriUsageDescription key with a user-facing function string
explaining clearly and fully why your app wants the information. In case your
app helps a number of locales, you’re now required to offer a
function string worth within the Data.plist file along with a legitimate
localized string throughout every of your app’s localization folders. If
you’re utilizing exterior libraries or SDKs, they could reference APIs that
require a function string. Whereas your app won’t use these APIs, a
function string continues to be required. For particulars, go to:
https://developer.apple.com/documentation/uikit/protecting_the_user_s_privacy/requesting_access_to_protected_resources.ITMS-90683: Lacking function string in Data.plist – Your app’s code
references a number of APIs that entry delicate consumer information, or the
app has a number of entitlements that allow such entry. The
Data.plist file for the “AppName.iOS.app” bundle ought to include a
NSLocationAlwaysUsageDescription key with a user-facing function string
explaining clearly and fully why your app wants the information. In case your
app helps a number of locales, you’re now required to offer a
function string worth within the Data.plist file along with a legitimate
localized string throughout every of your app’s localization folders. If
you’re utilizing exterior libraries or SDKs, they could reference APIs that
require a function string. Whereas your app won’t use these APIs, a
function string continues to be required. For particulars, go to:
https://developer.apple.com/documentation/uikit/protecting_the_user_s_privacy/requesting_access_to_protected_resources.ITMS-90683: Lacking function string in Data.plist – Your app’s code
references a number of APIs that entry delicate consumer information, or the
app has a number of entitlements that allow such entry. The
Data.plist file for the “AppName.iOS.app” bundle ought to include a
NSLocationAlwaysAndWhenInUseUsageDescription key with a user-facing
function string explaining clearly and fully why your app wants
the information. In case your app helps a number of locales, you’re now required
to offer a function string worth within the Data.plist file as well as
to a legitimate localized string throughout every of your app’s localization
folders. In the event you’re utilizing exterior libraries or SDKs, they could
reference APIs that require a function string. Whereas your app won’t
use these APIs, a function string continues to be required. For particulars,
go to:
https://developer.apple.com/documentation/uikit/protecting_the_user_s_privacy/requesting_access_to_protected_resources.ITMS-90683: Lacking function string in Data.plist – Your app’s code
references a number of APIs that entry delicate consumer information, or the
app has a number of entitlements that allow such entry. The
Data.plist file for the “AppName.iOS.app” bundle ought to include a
NSLocationWhenInUseUsageDescription key with a user-facing function
string explaining clearly and fully why your app wants the information.
In case your app helps a number of locales, you’re now required to offer
a function string worth within the Data.plist file along with a legitimate
localized string throughout every of your app’s localization folders. If
you’re utilizing exterior libraries or SDKs, they could reference APIs that
require a function string. Whereas your app won’t use these APIs, a
function string continues to be required. For particulars, go to:
https://developer.apple.com/documentation/uikit/protecting_the_user_s_privacy/requesting_access_to_protected_resources.ITMS-90683: Lacking function string in Data.plist – Your app’s code
references a number of APIs that entry delicate consumer information, or the
app has a number of entitlements that allow such entry. The
Data.plist file for the “AppName.iOS.app” bundle ought to include a
NSBluetoothAlwaysUsageDescription key with a user-facing function
string explaining clearly and fully why your app wants the information.
In case your app helps a number of locales, you’re now required to offer
a function string worth within the Data.plist file along with a legitimate
localized string throughout every of your app’s localization folders. If
you’re utilizing exterior libraries or SDKs, they could reference APIs that
require a function string. Whereas your app won’t use these APIs, a
function string continues to be required. For particulars, go to:
https://developer.apple.com/documentation/uikit/protecting_the_user_s_privacy/requesting_access_to_protected_resources
They’re mentioned that I need to clarify why I want these information in to the data.plist. However I don’t do something that requires this permission anyplace within the utility.
Once I acquired this e-mail, I needed to publish the appliance very urgently, so I entered the next permissions within the data.plist of the appliance: “Permission is requested as a result of libraries used within the utility.”.
I used to be in a position to one way or the other replace my utility after rejecting it 5-6 occasions in that launch. However proper now I wish to replace my app once more and Apple rejected my app once more. The explanation of rejection is: “Your app makes use of the SMS Fraud Extension to dam or filter messages from a listing of telephone numbers”.
Nevertheless, I don’t use any SMS Fraud Extension in my utility. I believe the explanation why Apple is responding on this approach stands out as the “NSContactsUsageDescription” permission I added to the data.plist. So I am at present making an attempt to determine why these permissions are obligatory.
I believe there could possibly be 2 causes for this.
-
The primary cause could also be resulting from a bundle. If the bundle is triggered, the primary bundle that involves my thoughts is the “Xamarin.Necessities” bundle. As a result of as you realize, many options are gathered within the “Xamarin.Necessities” nuget and even when we use 1-2 options on this bundle, we have now to incorporate the identical bundle within the venture.
I’m at present launching utility as Linker Conduct: Hyperlink Framework SDKs Solely.
If the issue is attributable to the Xamarin.Important bundle, I perceive that if I set Linker Conduct: Hyperlink All, I’ll ship my utility to the market with out including any permission. It will likely be mounted. However after I do that, my app cannot open. (Once I press the app icon to open my utility, the appliance closes with out even the splash display.) -
The second cause might that I added the Share Extension characteristic to my utility within the earlier launch. I do not know if the Share extension characteristic wants these permissions, however these permissions are required after I added share extension characteristic to my app. Does Share Extension apply these permissions?
Has anybody encountered this example earlier than? In that case, how did you resolve it?