获取用户当前位置Xamarin iOS

时间:2018-01-16 13:50:09

标签: ios xamarin xamarin.ios cllocationmanager

我想找到这个位置。我实现了一切,但没有任何作用。

这是我的班级:

O(1)

我这样说:

public class Best2 : CLLocationManagerDelegate
{
    public CLLocationManager _locationManager;

    private Int32 _numEvento;

    public Best2()
    {
    }

    protected Best2(NSObjectFlag t) : base(t)
    {
    }

    protected internal Best2(IntPtr handle) : base(handle)
    {
    }

    public Best2(Int32 paramEvento)
    {
        _numEvento = paramEvento;

        _locationManager = new CLLocationManager ();
        _locationManager.PausesLocationUpdatesAutomatically = false;
        _locationManager.DesiredAccuracy = CLLocation.AccurracyBestForNavigation;

        if (UIDevice.CurrentDevice.CheckSystemVersion (9, 0)) {
            _locationManager.AllowsBackgroundLocationUpdates = true;
        }

        _locationManager.Delegate = this;

        StartLocationUpdates();
    }

    public void StartLocationUpdates ()
    {
        if (CLLocationManager.LocationServicesEnabled) {
            _locationManager.RequestLocation();

            System.Diagnostics.Debug.WriteLine(
                String.Format(
                    "FA&)#2 RequestLocation() Data:D {0}"
                    , DateTime.UtcNow
                )
            );

        }
    }

    public override void Failed (CLLocationManager manager, Foundation.NSError error)
    {
        System.Diagnostics.Debug.WriteLine(
            String.Format(
                "FA&)#2 Failed() Data:D {0}"
                , DateTime.UtcNow
            )
        );
    }

    public override void UpdatedLocation (CLLocationManager manager, CLLocation newLocation, CLLocation oldLocation)
    {
        System.Diagnostics.Debug.WriteLine(
            String.Format(
                "FA&)#2 UpdatedLocation() Data:D {0}"
                , DateTime.UtcNow
            )
        );
    }

基于苹果documentation,我认为它应该调用方法失败如果不起作用, UpdatedLocation 如果有效。但没有任何东西在呼唤。

我已经尝试将类接收事件,但它也不起作用。

1 个答案:

答案 0 :(得分:0)

根据有关Request Location的文档,我们知道如果我们想在iOS中使用位置,我们必须按照以下步骤操作:

  1. NSLocationWhenInUseUsageDescription密钥和NSLocationAlwaysAndWhenInUseUsageDescription密钥添加到Info.plist文件中。
  2. 如果您的应用支持iOS 10及更早版本,请将NSLocationAlwaysUsageDescription密钥添加到Info.plist文件中。
  3. 然后在RequestLocation()之前,我们需要调用RequestAlwaysAuthorization()RequestWhenInUseAuthorization()来获取用户的身份验证。

    最后我们可以得到位置,但你误解了这个事件:

      

    我认为它应该调用方法失败,如果不工作和   如果有效,则更新位置。

    如果有效,则LocationsUpdated()不会触发UpdatedLocation()