位置跟踪应用程序在几分钟后在后台挂起



我尝试创建一个位置跟踪应用程序。 应用程序应该在后台运行。因此,我打开属性"启用后台模式","位置更新",并向源添加参数"NSLocationAlwaysUsageDescription"。

在ios7应用程序上运行正常,但在ios8上,几分钟后它会在后台挂起(应用程序应该如何工作:每次收到新位置时我都会发送请求,如果我可以在服务器上看到此请求,则表示该应用程序正在工作)。

我下载了具有位置功能的xamarin.mobile组件,并使用它代替我的地理定位类。应用程序也会在后台挂起。

我创建了具有相同功能的Objective-C应用程序,并在同一设备上对其进行了测试。结果 - 应用程序工作正常(如预期)。

所以,也许应用程序仍然需要一些设置,或者我错过了一些东西?

public class LocationUpdatedEventArgs : EventArgs
{
    CLLocation location;
    public LocationUpdatedEventArgs(CLLocation location)
    {
        this.location = location;
    }
    public CLLocation Location
    {
        get { return location; }
    }
}
protected CLLocationManager locMgr;
public event EventHandler<LocationUpdatedEventArgs> LocationUpdated = delegate { };
public GeoLocationService_iOS()
    {
        this.locMgr = new CLLocationManager();
        LocationUpdated += SaveLocation;
        locMgr.AuthorizationChanged += (object sender, CLAuthorizationChangedEventArgs e) =>
        {
            //CheckStatus();
        };
        if (locMgr.RespondsToSelector(new Selector("requestAlwaysAuthorization")))
        {
            locMgr.RequestAlwaysAuthorization();
        }
        locMgr.DistanceFilter = 1;
        locMgr.DesiredAccuracy = CLLocation.AccuracyBest;
        locMgr.LocationsUpdated += (object sender, CLLocationsUpdatedEventArgs e) =>
        {
            // fire our custom Location Updated event
            this.LocationUpdated(this, new LocationUpdatedEventArgs(e.Locations[e.Locations.Length - 1]));
        };
        locMgr.StartUpdatingLocation();
    }
    public void SaveLocation(object sender, LocationUpdatedEventArgs e)
    {
        SendLoc();
    }            

添加

locMgr.PausesLocationUpdatesAutomatically = false;

解决了我的问题。

最新更新