我尝试创建位置跟踪应用。 应用程序应该在后台运行。因此,我打开属性“启用后台模式”,“位置更新”并将参数“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();
}
答案 0 :(得分:0)
添加
locMgr.PausesLocationUpdatesAutomatically = false;
解决了我的问题。