यह है कि मैं क्या पिछले जवाब पर विचार किया है: (इस में MonoTouch सी # है, लेकिन आसानी से करने के लिए अनुवाद स्विफ्ट या ओब्जे-सी)
निम्नलिखित अनुमति के लिए पूछते हैं और फिर दिए गए स्थान अपडेट पर आगे बढ़ते हैं। अन्यथा, अगली बार उपयोगकर्ता आ जाएगा; स्थान सेवाओं अक्षम हैं या इनकार किया यह सेटिंग
//Location Manager (foreground)
CLLocationManager locMgr = new CLLocationManager();
locMgr.PausesLocationUpdatesAutomatically = false;
if (UIDevice.CurrentDevice.CheckSystemVersion(8, 0))
{
locMgr.RequestWhenInUseAuthorization();
}
if (CLLocationManager.LocationServicesEnabled && CLLocationManager.Status == CLAuthorizationStatus.AuthorizedWhenInUse)
{
//set the desired accuracy, in meters
locMgr.DesiredAccuracy = 150;
locMgr.LocationsUpdated += (object sender, CLLocationsUpdatedEventArgs e) =>
{
Console.WriteLine(e.Locations);
};
locMgr.StartUpdatingLocation();
}
else if (!CLLocationManager.LocationServicesEnabled || CLLocationManager.Status == CLAuthorizationStatus.Denied)
{
var alert = UIAlertController.Create(NSBundle.MainBundle.LocalizedString("Location access", "Location access"), NSBundle.MainBundle.LocalizedString("Please check location", "To show your position on the map, you have to enable location services and authorize the app"), UIAlertControllerStyle.Alert);
alert.AddAction(UIAlertAction.Create("Ok", UIAlertActionStyle.Cancel, null));
if (UIDevice.CurrentDevice.CheckSystemVersion(8, 0))
{
alert.AddAction(UIAlertAction.Create(NSBundle.MainBundle.LocalizedString("Go to settings", "Go to settings"), UIAlertActionStyle.Default, delegate
{
var url = new NSUrl(UIApplication.OpenSettingsUrlString);
UIApplication.SharedApplication.OpenUrl(url);
}));
}
PresentViewController(alert, true, null);
}
स्रोत
2017-01-30 12:55:47
अभी भी कोई रास्ता नहीं है कि "अनुमति दें" अगर उपयोगकर्ता का चयन करें या "इनकार" करने के लिए एक पुनर्निर्देशन के साथ अनुमति/सक्रियण अनुरोध करने के लिए एक संदेश प्रदर्शित करेगा, वहाँ केवल एक बार प्रति बदल ऐप स्थापित – adali