我试图在iOS的Xamarin.Forms
中实现一个解决方案,该解决方案通知我用户是否更改了该位置的授权状态(请参阅下面的代码)。因为应用程序第一次启动是授权被拒绝或未确定(我不完全知道)。
但它似乎无法工作,只有在允许或拒绝用户选项卡之前才会触发事件。
也许其他人有更好的想法或其他解决方案。我的目标是here。
我的班级里面有地图(视图或者什么):
public partial class MapsView : ContentPage
{
ILocation locService;
public MapsView()
{
...
locService = DependencyService.Get<ILocation>();
// Create method to listen for the event.
locService.AuthorizationChanged += MapsView_AuthorizationChanged;
}
private void MapsView_AuthorizationChanged(object sender, EventArgs args)
{
// Do stuff with the location.
}
}
我的依赖注入接口:
public delegate void AuthorizationChangedEventHandler(object sender, EventArgs args);
public interface ILocation
{
event AuthorizationChangedEventHandler AuthorizationChanged;
void OnAuthorizationChanged(EventArgs e);
}
iOS特定代码:
public class Location : ILocation
{
public Location()
{
var manager = new CLLocationManager();
if (UIDevice.CurrentDevice.CheckSystemVersion(8, 0))
manager.RequestWhenInUseAuthorization();
manager.AuthorizationChanged += (sender, args) => {
// Trigger event.
OnAuthorizationChanged(new EventArgs());
};
}
public event AuthorizationChangedEventHandler AuthorizationChanged;
public void OnAuthorizationChanged(EventArgs e)
{
AuthorizationChanged?.Invoke(this, e);
}
}