Something wrong with my iOS app's location service declaration - ios

A few days ago when I uploaded a new version of my app to the App Store using Xcode, I received the following e-mail from iTunes Connect:
Subject: iTunes Connect: Your app AppName has one or more issues
Dear developer,
We have discovered one or more issues with your recent delivery for
"AppName".
The following are for your information only and do not require any
action:
We have detected that this build requires the use of standard location
services when running in the background. Apps requiring location
services will now display the following text disclaimer on the App
Store. 'This app may use your location even when it isn’t open, which
can decrease device battery life'.
Regards,
The App Store team
And the build that I uploaded cannot be selected for review submission on the iTunes Connect website.
How should I deal with this problem? Thanks.

I run into this issue long time ago, this is because, if your app is still use location service in the background, it maybe consume the battery.
1) If you want to always use the location service, you should set this, can let you pass the itunes verify:
you should in your Info.plist add NSLocationAlwaysUsageDescription permission, and set the value, why you want to always use the location service.
2) If you just need when user using app this duration to use location service. You should NSLocationWhenInUseUsageDescription instead of NSLocationAlwaysUsageDescription permission, and you should also set the description why you want to use the permission.

Apple guidelines *
If your app requires location usage even in the background mode, In bottom of the app description and iTunesConnect application page you have to put this text
"This app may use your location even when it isn’t open, which can decrease device battery life"
It is important to put this disclaimer so that if user downloads your application he should be aware that location services will be active for the app even when the application is not in the use.
You don't have to put another build, just update the description with this disclaimer and submit for review again. It will get re-reviewed and, if all terms and conditions are valid, it will be approved.
Since Apple services for new application upload is not active from 23rd Dec to 27th Dec due to yearly Christmas holiday, so you should try to submit for review after it.
Let me know if you have any issues.

While going through the same issue, I found that
Capabilities -> Background Modes -> Location updates
were enabled for my app.
Please deselect this, if your app does not require location updates in background.

This is not a big problem actually. Apple reviewer already said you "do not require any action" he / she only suggest you it is more appropriate show a warning text (it is appear when you request to use location service within UIAlertView) like this message 'This app may use your location even when it isn’t open, which can decrease device battery life'.
You can add descriptive string in .plist file.

Probably you forgot to add NSLocationWhenInUseUsageDescription or NSLocationAlwaysUsageDescription in plist or you didn't add background mode in capabilities of the project.

The problem is with your string message you are displaying. i was also once stucked in this kind of issue i was using app name like "Burn you phone". So by changing the message string on location authorization will do the trick.

I had the same problem and contacted iTunes Connect about it. Below are excerpts from their responses so far:
I do understand your concerns about continuing to receive notices with
every update or build. I can confirm this is working as expected.
...
There are some emails that are system-generated by iTunes Connect and
there is not a way to disable them at this time. If you provide us
feedback we will be more than glad to provide it to the appropriate
team for future improvements.
...
You can definitely try adding the app description and see if this will
resolve the email notifications.
However, we can not assure you that this will cancel the email
notifications.
Just wanted to demonstrate their stellar customer support and exemplary knowledge of their own product...
However, I haven't yet confirmed whether putting the text in the description field will silence the email.
The other responses here mention the privacy usage descriptions in Info.plist, but this email is not directly related to this issue. Anyways, if you neglect to include those, your app will just crash when you try to access location services (unless permission had already been given in a pre-iOS 10 version of your app).

Related

App Tracking Transparency on Flutter was rejected by Apple

I need help us
I have an problem with publish my flutter app on Apple Developer. My binary was rejected any times and i does't any more ideas about this.
The support team of apple developer says this problem:
Guideline 5.1.2 - Legal - Privacy - Data Use and Sharing
We noticed your app accesses web content you own where you collect cookies. Cookies may be used to track users, but you do not use App Tracking Transparency to request the user's permission before collecting data used to track.
Starting with iOS 14.5, apps on the App Store need to receive the user’s permission through the AppTrackingTransparency framework before collecting data used to track them.
But, i implemented according of docs. For showing permission request dialog i have used this library:
https://pub.dev/packages/app_tracking_transparency
I'm confused because it already implemented everything that was requested.
App Tracking Transparency implemented
Permission is displayed to the user, who selects YES or NO.
App Tracking Information is updated here in the App Store Connect section, including Third Party Cookies.
My app accesses external links in a WebView and for that reason they are questioning the use of "App Tracking". But I implemented everything as requested by them.
My biggest question is if I'm forgetting something that may have gone unnoticed.
Anyone who can help me, please?
The same thing exactly happened with me twice and in both time the issue was resolved by simply sending them a video recording of the app showing the Yes/No App Tracking Transparency dialog. They just want to know when it appears to user if you implemented everything correctly. So try sending them a video recording in the resolution center as a response to that message.
App Store Review team is always questioning the "App Tracking Transparency dialog". Even if this dialog is the first thing that appears after the app launch. (I think they just haven't launched the app).
There's no need to make a video, just add the text "The App Tracking Transparency dialog is appearing after app launch" and they will approve the app.

I cannot submit new build because of this error NSUserTrackingUsageDescription key in the binary (App Store)

I have a flutter app, all I am doing is getting the user's current location. That's pretty simple by asking location permission with NSLocationWhenInUseUsageDescription NSLocationAlwaysUsageDescription
But when I run the app, it crashes for missing key NSUserTrackingUsageDescription. When I added that Tracking Usage key now the app store is asking for which data I track (before submission), look at the error
Your app contains NSUserTrackingUsageDescription, indicating that you will request permission to track users. To update this information on your app's product page, you must indicate which data types are tracking users. If this is incorrect, update your app binary and upload a new build to App Store Connect.
I need a location for address only when I provide that information, the continue button is still disabled. This app was published before 2-3 times but now I am having this issue. Now I am updating the App Privacy section about data but it seems the continue button is still disabled for me. I attached the screenshots.
Same issue was encountered in this SO post. I suggest to follow the same workaround here:
To address this issue go to App Store Connect > App Privacy:
1- under Data Types > Location > I selected Precise Location >
Next > Save
2-under the gray Location/Precise Location Section (pictured below)
press the blue Edit Button and tick these 3 selections:
• Used for App Functionality
• Linked to the user's identity
• Used for tracking purposes this is the last option, you must
tick Yes, we use precise location data for tracking purposes. This
will make the error go away
Now the Location section it looks likes this and the error went away

Apple keeps rejecting app with AdMob because of bluetooth notification string not correct

Since IOS 13 came to live old 3 party APIs stopped working, In my app i needed to fix few because of that so i needed to fit it to IOS 13.
Since then Apple keeps rejecting my app because of Bluetooth user notification is not correct.
I just don't know what to write there, It is so annoying. I have to add it because of AdMobs and there is nowhere to say what to write over there.
I don't user BT in my app, it is just the AdMobs beacons that needs it probably.
I've tried:
and
And i will probably will have the same issue with the calendar message also.
When i try to remove it they demand it and then not approving it.... I understand maybe the first one but what wrong with the the second one? why is that no clear enough for them?
10x
see apple docs below: https://developer.apple.com/design/human-interface-guidelines/ios/app-architecture/requesting-permission/
Explain why your app needs the information. Provide custom text (known
as a purpose string or usage description string) for display in the
system's permission request alert, and include an example. Keep the
text short and specific, use sentence case, and be polite so people
don't feel pressured. There’s no need to include your app name—the
system already identifies your app. For developer guidance, see
Protecting the User's Privacy.
you're not explaining exactly why you need access to bluetooth. you must be specific. saying, "XYZ app needs access to bluetooth to interact with beacons to serve you location based advertisements"
something like that should do. no cutting corners, no trying to put it off on Google, just say it like it is and you'll likely pass through app approval without a problem.

iOS location permission after app reinstall

I’m using Crashlytics for internal application tests and noticed one interesting thing. I’m using geolocation in my app and asking for permissions from a user. When customer install app for first time he sees default Apple’s geolocation permissions asking pop up. And everything work fine.
But, if user will remove app from phone and install it again... in this case, when I’m asking for permissions, pop up just won’t appear BUT geolocation is WORKING. How? Is this some sort of new feature or iOS issue? I were testing with iOS 11.0.3. I haven’t found anything in documentation, and haven’t seen this behavior in previous iOS versions. Looks like iOS just memorize the app and automatically enables geolocation when I’m asking for user permissions instead of showing pop up.
Maybe someone has answer for this?
it is possible that there could be a mistake in your code pattern while checking authorization status, the behavior you are seeing is likely due to iOS caching location permissions for apps.
In your code, make sure that you check authorization status (via the authorizationStatus() method), and continue with requesting location authorization when the current status is .notDetermined (kCLAuthorizationStatusNotDetermined)
iOS does cache authorization status for apps as well. If you would like to reset your location permissions for testing purposes, you can set your location privacy settings to the factory default: go to Settings > General > Reset and tap Reset Location & Privacy. When your location and privacy settings are reset, apps will stop using your location until you grant them permission.
Unfortunately there is no developer control over this.
Caching of permissions for apps is in an ever evolving stage, where we are trying to find the best user experience, so you may have noticed some changes lately. Also, there will be a grace period where the app uninstall to reinstall time might be making a difference.
If your observations of apps that behave like you expected are recent (on the same version of iOS that you have observed your app behave differently), and the uninstall/reinstall time difference is immediate (like how you probably test your app), please let me know which apps, and I will see if I can dig some information.

The background to locate for iOS

We because of the functional requirements of the application of rules in 30 minutes to the server upload a local position, so I used in the project background, but submits to apple for review has been rejected,Then I shall, in accordance with the apple to add their prompt solution in the description of application of power loss of battery and so on, but still with the reason to refuse me, I really can't understand, what a great god met this kind of problem?
Reason:
2.16 Details
Your app declares support for location in the UIBackgroundModes key in your Info.plist file but does not declare any features that require persistent location. Apps that declare support for location in the UIBackgroundModes key in your Info.plist file must have features that require persistent location.
Next Steps
Please revise your app to include features that require the persistent use of real-time location updates while the app is in the background. Please also add the following battery use disclaimer in your Application Description:
"Continued use of GPS running in the background can dramatically decrease battery life."
If your app does not require persistent real-time location updates, please remove the "location" setting from the UIBackgroundModes key. You may wish to use the significant-change location service or the region monitoring location service if persistent real-time location updates are not required for your app features.
Welcome to SO.
Your post is an unintelligible mess. You need to craft clear English language sentences that explain why you need background location services, and you also need to add language that warns the user that your app will reduce the user's battery life, as they explained to you.
It sounds to me like you are saying that your app needs to send updated location information to your server every 30 minutes even when it is running in the background.
If so, you need to explain that, and explain why you need to do that.
I gather that English is not your native language. You might need help from somebody who is fluent in both English and your language to translate your explanation so you can submit it to Apple.

Resources