OneSignal / OneSignal-Xamarin-SDK

OneSignal is a free push notification service for mobile apps. This plugin makes it easy to integrate your Xamarin app with OneSignal. https://onesignal.com
Other
104 stars 50 forks source link

iOS App Store certification failure #244

Closed ilFabrz closed 2 years ago

ilFabrz commented 2 years ago

Description: Hello, I have a Xamarin iOS app already published on the App Store, after adding the OneSignal SDK to it the App Store Connect rejected it with the following errors (immediately after the upload to the store, before the review):

Dear Developer, We identified one or more issues with a recent delivery for your app. Please correct the following issues, then upload again.

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 NSContactsUsageDescription key with a user-facing purpose string explaining clearly and completely why your app needs the data. Starting Spring 2019, all apps submitted to the App Store that access user data are required to include a purpose string. If you're using external libraries or SDKs, they may reference APIs that require a purpose string. While your app might not use these APIs, a purpose string is still required. You can contact the developer of the library or SDK and request they release a version of their code that doesn't contain the APIs. Learn more (https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy).

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. Starting Spring 2019, all apps submitted to the App Store that access user data are required to include a purpose string. If you're using external libraries or SDKs, they may reference APIs that require a purpose string. While your app might not use these APIs, a purpose string is still required. You can contact the developer of the library or SDK and request they release a version of their code that doesn't contain the APIs. Learn more (https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy).

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 NSMicrophoneUsageDescription key with a user-facing purpose string explaining clearly and completely why your app needs the data. Starting Spring 2019, all apps submitted to the App Store that access user data are required to include a purpose string. If you're using external libraries or SDKs, they may reference APIs that require a purpose string. While your app might not use these APIs, a purpose string is still required. You can contact the developer of the library or SDK and request they release a version of their code that doesn't contain the APIs. Learn more (https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy).

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 NSAppleMusicUsageDescription key with a user-facing purpose string explaining clearly and completely why your app needs the data. Starting Spring 2019, all apps submitted to the App Store that access user data are required to include a purpose string. If you're using external libraries or SDKs, they may reference APIs that require a purpose string. While your app might not use these APIs, a purpose string is still required. You can contact the developer of the library or SDK and request they release a version of their code that doesn't contain the APIs. Learn more (https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy).

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 NSSiriUsageDescription key with a user-facing purpose string explaining clearly and completely why your app needs the data. Starting Spring 2019, all apps submitted to the App Store that access user data are required to include a purpose string. If you're using external libraries or SDKs, they may reference APIs that require a purpose string. While your app might not use these APIs, a purpose string is still required. You can contact the developer of the library or SDK and request they release a version of their code that doesn't contain the APIs. Learn more (https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy). Though you are not required to fix the following issues, we wanted to make you aware of them:

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. Starting Spring 2019, all apps submitted to the App Store that access user data are required to include a purpose string. If you're using external libraries or SDKs, they may reference APIs that require a purpose string. While your app might not use these APIs, a purpose string is still required. You can contact the developer of the library or SDK and request they release a version of their code that doesn't contain the APIs. Learn more (https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy).

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 NSBluetoothAlwaysUsageDescription key with a user-facing purpose string explaining clearly and completely why your app needs the data. Starting Spring 2019, all apps submitted to the App Store that access user data are required to include a purpose string. If you're using external libraries or SDKs, they may reference APIs that require a purpose string. While your app might not use these APIs, a purpose string is still required. You can contact the developer of the library or SDK and request they release a version of their code that doesn't contain the APIs. Learn more (https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy).

I have managed to bypass these errors by adding the following keys to Info.plist:

<key>NSContactsUsageDescription</key>
<string>Notifiche Push</string>
<key>NSCalendarsUsageDescription</key>
<string>Notifiche Push</string>
<key>NSMicrophoneUsageDescription</key>
<string>Notifiche Push</string>
<key>NSAppleMusicUsageDescription</key>
<string>Notifiche Push</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>Notifiche Push</string>
<key>NSBluetoothAlwaysUsageDescription</key>
<string>Notifiche Push</string>
<key>NSSiriUsageDescription</key>
<string>Notifiche Push</string>

After that I was able to submit the app to the store, but the review has rejected it with this error:

We noticed that your app uses HealthKit, but your app does not appear to include any primary features that require health or fitness data.

The intended use of HealthKit is generally to share health or fitness data with other apps or devices as a part of the app's core functionality.

Next Steps

To resolve this issue, please remove any HealthKit functionality from your app, as well as any references to this app’s interactivity with HealthKit from the app or its metadata. This includes removing any HealthKit-related keys in your app's Info.plist as well as removing any calls to HealthKit APIs, including those from 3rd party platforms, from your app.

While you may not have intended to include HealthKit in your app, HealthKit APIs may have been included via third-party platforms implemented in your app. Alternatively, HealthKit-related keys or references may have been included in your app’s Info.plist, including but not limited to:

/NSHealthShareUsageDescription/ /NSHealthUpdateUsageDescription/

Next Steps

To resolve this issue, please remove all HealthKit APIs from your app, as well as any references to HealthKit keys from the info.plist entirely.

I'm stuck at this point because my app does not have any reference to HealthKit, neither has health functionalities, since the last submission the only thing I've changed is adding the OneSignal SDK following the documentation on your website.

I'm looking for help about this issue, because the only other solution I see is using another service.

Thank you

Environment Xamarin.iOS and Xamarin.Mac SDK: 14.99.0.598 (11838db7d) OneSignal SDK: Com.OneSignal 3.10.6 (Nuget) MinimumOSVersion: 13

jkasten2 commented 2 years ago

@ilFabrz Thanks for reporting, however OneSignal does not use or require any of the permissions / capabilities you have listed. Have you changed any other settings or added or upgraded any other dependencies since the last time you submitted to Apple?

jkasten2 commented 2 years ago

Closing due to no response.