Prevent Location blue bar in ios 11 - ios

As you already heard, in iOS11, an app that’s actively receiving continuous background updates will show a double-height blue bar, whenever authorization is set to While Using. It seems there is no way to remove the blue bar if the App is using background location App.
My app supports ios 9.0 and above and, I have added all the keys required in info.plist including the one below.
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string></string>
But seems everybody says there is no way to remove the blue bar while background location updates is working.
However I have installed UBER and somehow they managed to hide the blue bar when the app is in background, but in my app I can see blue bar when I put app in background.
Does some one knows any solution to get rid of blue bar in iOS11 when we set permission "while using the app" ?

In iOS 11, the Blue Bar will appear when an Always authorized app opts-in to displaying the blue bar while it is actively receiving Continuous Background Location updates via startUpdatingLocation()
There’s a new property on CLLocationManager that Always authorized apps can use to control the visibility of their blue bar.
#property(assign, nonatomic) BOOL showsBackgroundLocationIndicator
When-in-use authorized apps will continue showing the Blue Bar as before.
No other service will turn on the Blue Bar. When an app which makes use of any other location service receives an occasional update (for example Significant Location Change), the location arrow on the status bar will momentarily blink solid, but the Blue Bar will not appear.

According to apple , After iOS 11 update that blue bar is showing when app is running on the background. What you can do is, track user location when app is in the foreground.
Check this

Try with NSLocationAlwaysUsageDescription in info.plist file and use requestAlwaysAuthorization in CLLocationManager.
showsBackgroundLocationIndicator is useful for requestAlwaysAuthorization.

Related

bluebar stays forever even if stopupdating is called in iOS 11

I am accessing location services as 'always', i know all the changes made by apple in iOS 11. i updated my plist as required( added new key). I calling stopUpdatingLocation as soon as application goes to the background, but this blue still stays there saying your application is using location in the background. Top of that filled location icon in status bar changes to outlined location icon also. I am using Mapbox SDK as well. Is it a bug with iOS 11 or am i missing something? Just to give background information, i am fully aware how location services works. i tried almost all solutions to remove that blue bar, but it seems it is not happening.
I tried self.locationManager.allowsBackgroundLocationUpdates = false, self.locationManager = nil, self.locationManager.delegate = nil but nothing is helping.
It will be great if anyone can help me with this.
iOS 11 Beta release 5 has removed the unnecessary and intrusive Blue banner that displays for apps that used the location of the iPhone. Displaying the Blue bar for background location use is left to the app developer through a property.
#property(assign, nonatomic) BOOL showsBackgroundLocationIndicator
The users of the apps with location features are prompted to allow location permission first at the time of installing an app and then periodically prompted for apps that use location in the background continuously. The location use indicator arrow with three different shades is another mechanism for users to know if the location service is in use. Therefore an always appearing blue banner is unnecessary and Apple has recognized it.

iOS Location status message on background doesn't show

I've implemented a CLLocation like waze to get the users location on background mode, I want to show the bar like "incall" showing that I'm getting the location.
I don't know why the bar doesn't show, I have in the info.plist this
Key : NSLocationAlwaysUsageDescription.
I assume you are talking about the blue "navigation" bar that appears under the status bar.
That only appears when an app is being used for navigation. An app that simply gets location in the background does not show the blue bar (or any other color bar).
If you requestAlwaysAuthorization the bar will not appear (because you could use location services at any time). The bar appears only when you requestWhenInUseAuthorization and the app asks to keep receiving location updates while in the background.
See the documentation for requestWhenInUseAuthorization (emphasis added):
If the user grants “when-in-use” authorization to your app, your app
can start most (but not all) location services while it is in the
foreground. (Apps cannot use any services that automatically relaunch
the app, such as region monitoring or the significant location change
service.) When started in the foreground, services continue to run in
the background if your app has enabled background location updates in
the Capabilities tab of your Xcode project. Attempts to start location
services while your app is running in the background will fail. The
system displays a location-services indicator in the status bar when
your app moves to the background with active location services.
This line about the "location-services indicator" is notably absent from the documentation for requestAlwaysAuthorization.

iOS: is it possible to get an app to show on the top area of the screen whilst in background?

The above is what can bee seen in iOS when the Maps app goes in background state. Is it possible to achieve the same with custom apps or is it only something that Apple apps can do (e.g. Garageband)?
The behaviour is:
user opens Maps app and sets navigation
user sets Maps in background
iOS top navigation area becomes blue and stays visible whilst using other apps
once the user taps on the bar it returns to the Maps app
Those are the background modes available on Xcode:
Is it possible to do this for all these modes?
Yes you can do it by setting
CLAuthorizationStatus = kCLAuthorizationStatusAuthorizedWhenInUse
instead of kCLAuthorizationStatusAuthorizedAlwaysUse
and add this in your .plist
you have to request when in use authorization , but this is not the trick , here is the trick
click on your project in the project navigator
select your target .
click on the capabilities tap
turn background modes one
List item
check the location updates check box .
of course you have to set the NSLocationWhenInUseUsageDescription property in your info.plist

iOS8: How to display blue bar "is Using Your Location" with "requestAlwaysAuthorization"

How does an app register for location services in the background and signification change location services, i.e. using requestAlwaysAuthorization, and get the Blue Bar to warn the user that they might want to end their activity?
According to Apple documentation using requestWhenInUseAuthorization:
The system displays a location-services indicator in the status bar when your app moves to the background with active location services.
However,
Apps cannot use any services that automatically relaunch the app, such as region monitoring or the significant location change service.
The limitation on requestWhenInUseAuthorization seems severe (cannot be relaunched if killed by the OS).
Can an app call both the Authorization methods?
Is the app supposed to forgo being relaunched by significant location change services, in order to get the Blue Bar to be seen?
Am I missing something obvious here?
(Similar question is Blue banner "Your app is using your location" is not showing after exiting my app. Other questions seem to want to get rid of the banner.)
The blue bar only show when you enable Background Location Updates and request when-in-use authorization in iOS 8.
Blue bar “is Using Your Location” appears shortly after exiting app
Sounds like location manager can't stop immediately. So the blue bar will appear until location manager stop completely. Or maybe it's just a bug .

How to disable or turn off iOS background location capability

On iOS 8, I can enable background location service with the capability set.
My app can receive location update in background mode, and when in background mode there is a blue bar on top to indicate the background location service is running.
The app is using Google MAP Service plus CLLocationManager.
Question:
Can I turn off background capability in run time?
Description
I want to enable / disable this background location service in app's setting page.
Somehow I've tried stopUpdatingLocation, but in background the blue bar still exists.
Thank you.
Oh, I found the answer.
When an app is enabled background location service and you want to disable it at run time, you will need:
Release all CLLocationManager in your app when entering background mode.
Set your GMSMapView .myLocationEnabled to NO

Resources