iOS:全天候跟踪用户移动

时间:2017-03-02 06:58:23

标签: ios location cllocationmanager

我需要跟踪用户何时出行。为此,我设置了CLLocationManager,如下所示:

self.locationManager.requestAlwaysAuthorization()
self.locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters
self.locationManager.distanceFilter = 200                       
self.locationManager.pausesLocationUpdatesAutomatically = false                      
self.locationManager.allowsBackgroundLocationUpdates = true
self.locationManager.activityType = .other

所以我的应用程序即使没有运行也会获取位置,将位置保存在数据库中并再次进入后台。稍后,当用户启动应用程序时,将从数据库中的新位置提取行程。

这或多或少的能耗约为15%。该位置是在手机信号塔的帮助下确定的,而不是通过gps确定的。

我意识到在某些日子里,跟踪不适用于某些地区(火车轨道)。你知道为什么会这样吗? (仅限iOS10设备)。

您是否看到了改进以实现我的目标?还有什么可以用来确定旅行吗? (旅行时间超过15公里/小时且超过15分钟)。

由于

2 个答案:

答案 0 :(得分:1)

可以有多种活动类型,可以帮助您找到曲目,船只等。以下是活动类型的苹果文档:

 <application
    android:allowBackup="true"
    android:icon="@mipmap/ic_app_icon"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_app_icon"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">

    <activity
        android:name=".activities.HomeActivity"
        android:screenOrientation="portrait"
        android:theme="@style/AppTheme.NoActionBar">
    </activity>

您可以使用public enum CLActivityType : Int { case other case automotiveNavigation // for automotive navigation case fitness // includes any pedestrian activities case otherNavigation // for other navigation cases (excluding pedestrian navigation), e.g. navigation for boats, trains, or planes }

答案 1 :(得分:0)

使用iOS 12,您还可以使用新的活动类型来监视位置:

  

”如果预期的用户活动远高于此活动,则使用此活动类型   地面。”

CLActivityType.airborne

如Apple在参考文献中所建议的:https://developer.apple.com/documentation/corelocation/clactivitytype/airborne