当前位置: 首页 > 编程日记 > 正文

ios9定位服务的app进入后台三分钟收不到经纬度,应用被挂起问题及解决方案

原来定位服务是10分钟收不到定位信息就挂起定位,现在变为最短3分钟,估计都是为了省电吧。只要你开启应用的后台定位,并且10分钟有一次定位,那么苹果就不会关闭你的线程,现在变成3分钟。若你的应用开启了后台定位,当最短3分钟(经过测试也可能大于3分钟小于等于10分钟)不定位,ios系统也会把你的应用挂起。而高德地图ios sdk的ios9以上版本后台定位开启方法变更,而高德导航库没有同步变更,导致使用老的地图库和高德导航地图库的用户定位服务不能实际开启,切换到后台3分钟(经过测试也可能大于3分钟小于等于10分钟)没有实际定位请求,被ios系统认为是伪定位服务的应用并挂起线程。而高德定位模块也有问题,有时间也有不定位的情况。如:手机开启后台定位的应用,网络连接wifi(aibinjian)切换到后台,当用户移动到wifi覆盖区外,那么应用收到网络异常通知,手机的网络自动切换到4g手机网络,应用没有收到网络正常通知,导致应用在8分钟后不定位,并且应用被系统干掉。当手机没有网络时高德也不定位,而原生态的定位在有网和无网络的情况下都能定位,所以还是用原生态的定位更靠谱。 
高德地图iOS SDK V2.5.0版本提供后台持续定位的能力,即便你的app退到后台,且位置不变动时,也不会被系统挂起,可持久记录位置信息。该功能适用于记录轨迹录或者出行类App司机端。

只需要您的做以下几步操作:

1.添加代码。

对于iOS9之前的系统:


_mapView.pausesLocationUpdatesAutomatically = NO; 
对于iOS9(含)以上系统:


_mapView.allowsBackgroundLocationUpdates = YES;

若你的应用有3D地图和导航地图,那么你的应用用的应该是导航地图,若想用定位由于导航地图没有更新,估计你的应用没有allowsBackgroundLocationUpdates 这个属性,只能让你发愁了。

高德导航地图库千呼万换始终不出来,需要后台定位服务的应用不可能等待这个大爷吧!只能用替代方案了。开启原生态的定位服务,只是不用原生态的位置,能够保证高德地图一致获取到经纬度,仍旧用高德的经纬。原生态的位置服务只是触发高德地图收到经纬度和保持后台定位。

<code class="hljs objectivec has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">
<span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">@interface</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">mainViewController</span>()<<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">NoticeCarViewDelegate</span>,<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">UIAlertViewDelegate</span>,<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">ServicingViewDelegate</span>,<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">MAMapViewDelegate</span>,<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">AMapSearchDelegate</span>,<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">UIActionSheetDelegate</span>,<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">PlaceSearchDeleagte</span>,<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">CLLocationManagerDelegate</span>></span>
{CLLocationManager *_locationManager;
}- (<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">void</span>)initAMapProperty
{FLDDLogDebug(@<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"函数"</span>);_locationManager = [[CLLocationManager alloc] init];_locationManager<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.delegate</span> = <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">self</span>;_locationManager<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.pausesLocationUpdatesAutomatically</span> = <span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">NO</span>;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> (IOS_VERSION_LARGE_OR_EQUAL(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">9.0</span>)){_locationManager<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.allowsBackgroundLocationUpdates</span> = <span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">YES</span>;}<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> (![CLLocationManager locationServicesEnabled]) {<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSLog</span>(@<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"定位服务当前可能尚未打开,请设置打开!"</span>);<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">return</span>;}<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//如果没有授权则请求用户授权</span><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusNotDetermined){[_locationManager requestAlwaysAuthorization];}<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">else</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span>([CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorizedAlways){<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//设置代理</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//        _locationManager.delegate = self;</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//设置定位精度</span>_locationManager<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.desiredAccuracy</span> = kCLLocationAccuracyBest;<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//定位频率,每隔多少米定位一次</span>CLLocationDistance distance = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">10.0</span>;<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//十米定位一次</span>_locationManager<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.distanceFilter</span> = distance;<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//启动跟踪定位</span>[_locationManager startUpdatingLocation];FLDDLogDebug(@<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"开启定位"</span>);}<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//    //定位</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//    _mapView.showsUserLocation = YES;</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//地图跟着位置和方向移动</span>[_mapView setUserTrackingMode:MAUserTrackingModeFollow  animated:<span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">YES</span>];_mapView<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.showsCompass</span> = <span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">NO</span>;<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//楼块隐藏</span>_mapView<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.buildingsDisabled</span>=<span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">YES</span>;
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//    //后台定位 可持久记录位置信息。高德地图iOS SDK V2.5.0版本提供后台持续定位的能力,即便你的app退到后台,且位置不变动时,也不会被系统挂起,可持久记录位置信息。该功能适用于记轨迹录或者出行类App司机端。</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//    if (IOS_VERSION_LARGE_OR_EQUAL(9)) {</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//        _mapView.allowsBackgroundLocationUpdates = YES;</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//    }</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//    else</span>{<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//由于IOS9中定位的授权机制改变 需要进行手动授权</span>_mapView<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.pausesLocationUpdatesAutomatically</span> = <span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">NO</span>;}<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//不能旋转</span>_mapView<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.rotateEnabled</span>=<span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">NO</span>;_mapView<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.distanceFilter</span> = DISTANCE_FILTER;
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//    _mapView.desiredAccuracy = kCLLocationAccuracyHundredMeters;</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//    mapView.showsScale = YES;</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//    [mapView setZoomLevel:KmaxLEVEL animated:NO];</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//自定义精度圈样式 去除精度圈</span>_mapView<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.delegate</span> = <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">self</span>;<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//纪录经纬度的数组</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//    coordates = [[NSMutableArray alloc] init];</span>}<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">#pragma mark 定位回调 能获取到定位点的经纬度坐标</span>
- (<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">void</span>)locationManager:(CLLocationManager *)manager didUpdateLocations:(<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSArray</span><CLLocation *> *)locations
{[locations enumerateObjectsUsingBlock:^(CLLocation * _Nonnull obj, NSUInteger idx, <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">BOOL</span> * _Nonnull stop) {FLDDLogDebug(@<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"obj.coordinate = %.f \n %.f"</span>,obj<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.coordinate</span><span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.latitude</span>,obj<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.coordinate</span><span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.longitude</span>);}];FLDDLogDebug(@<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">""</span>);
}</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li><li style="box-sizing: border-box; padding: 0px 5px;">26</li><li style="box-sizing: border-box; padding: 0px 5px;">27</li><li style="box-sizing: border-box; padding: 0px 5px;">28</li><li style="box-sizing: border-box; padding: 0px 5px;">29</li><li style="box-sizing: border-box; padding: 0px 5px;">30</li><li style="box-sizing: border-box; padding: 0px 5px;">31</li><li style="box-sizing: border-box; padding: 0px 5px;">32</li><li style="box-sizing: border-box; padding: 0px 5px;">33</li><li style="box-sizing: border-box; padding: 0px 5px;">34</li><li style="box-sizing: border-box; padding: 0px 5px;">35</li><li style="box-sizing: border-box; padding: 0px 5px;">36</li><li style="box-sizing: border-box; padding: 0px 5px;">37</li><li style="box-sizing: border-box; padding: 0px 5px;">38</li><li style="box-sizing: border-box; padding: 0px 5px;">39</li><li style="box-sizing: border-box; padding: 0px 5px;">40</li><li style="box-sizing: border-box; padding: 0px 5px;">41</li><li style="box-sizing: border-box; padding: 0px 5px;">42</li><li style="box-sizing: border-box; padding: 0px 5px;">43</li><li style="box-sizing: border-box; padding: 0px 5px;">44</li><li style="box-sizing: border-box; padding: 0px 5px;">45</li><li style="box-sizing: border-box; padding: 0px 5px;">46</li><li style="box-sizing: border-box; padding: 0px 5px;">47</li><li style="box-sizing: border-box; padding: 0px 5px;">48</li><li style="box-sizing: border-box; padding: 0px 5px;">49</li><li style="box-sizing: border-box; padding: 0px 5px;">50</li><li style="box-sizing: border-box; padding: 0px 5px;">51</li><li style="box-sizing: border-box; padding: 0px 5px;">52</li><li style="box-sizing: border-box; padding: 0px 5px;">53</li><li style="box-sizing: border-box; padding: 0px 5px;">54</li><li style="box-sizing: border-box; padding: 0px 5px;">55</li><li style="box-sizing: border-box; padding: 0px 5px;">56</li><li style="box-sizing: border-box; padding: 0px 5px;">57</li><li style="box-sizing: border-box; padding: 0px 5px;">58</li><li style="box-sizing: border-box; padding: 0px 5px;">59</li><li style="box-sizing: border-box; padding: 0px 5px;">60</li><li style="box-sizing: border-box; padding: 0px 5px;">61</li><li style="box-sizing: border-box; padding: 0px 5px;">62</li><li style="box-sizing: border-box; padding: 0px 5px;">63</li><li style="box-sizing: border-box; padding: 0px 5px;">64</li><li style="box-sizing: border-box; padding: 0px 5px;">65</li><li style="box-sizing: border-box; padding: 0px 5px;">66</li><li style="box-sizing: border-box; padding: 0px 5px;">67</li><li style="box-sizing: border-box; padding: 0px 5px;">68</li><li style="box-sizing: border-box; padding: 0px 5px;">69</li><li style="box-sizing: border-box; padding: 0px 5px;">70</li><li style="box-sizing: border-box; padding: 0px 5px;">71</li><li style="box-sizing: border-box; padding: 0px 5px;">72</li><li style="box-sizing: border-box; padding: 0px 5px;">73</li><li style="box-sizing: border-box; padding: 0px 5px;">74</li><li style="box-sizing: border-box; padding: 0px 5px;">75</li><li style="box-sizing: border-box; padding: 0px 5px;">76</li><li style="box-sizing: border-box; padding: 0px 5px;">77</li><li style="box-sizing: border-box; padding: 0px 5px;">78</li><li style="box-sizing: border-box; padding: 0px 5px;">79</li><li style="box-sizing: border-box; padding: 0px 5px;">80</li><li style="box-sizing: border-box; padding: 0px 5px;">81</li><li style="box-sizing: border-box; padding: 0px 5px;">82</li><li style="box-sizing: border-box; padding: 0px 5px;">83</li><li style="box-sizing: border-box; padding: 0px 5px;">84</li><li style="box-sizing: border-box; padding: 0px 5px;">85</li><li style="box-sizing: border-box; padding: 0px 5px;">86</li><li style="box-sizing: border-box; padding: 0px 5px;">87</li><li style="box-sizing: border-box; padding: 0px 5px;">88</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li><li style="box-sizing: border-box; padding: 0px 5px;">26</li><li style="box-sizing: border-box; padding: 0px 5px;">27</li><li style="box-sizing: border-box; padding: 0px 5px;">28</li><li style="box-sizing: border-box; padding: 0px 5px;">29</li><li style="box-sizing: border-box; padding: 0px 5px;">30</li><li style="box-sizing: border-box; padding: 0px 5px;">31</li><li style="box-sizing: border-box; padding: 0px 5px;">32</li><li style="box-sizing: border-box; padding: 0px 5px;">33</li><li style="box-sizing: border-box; padding: 0px 5px;">34</li><li style="box-sizing: border-box; padding: 0px 5px;">35</li><li style="box-sizing: border-box; padding: 0px 5px;">36</li><li style="box-sizing: border-box; padding: 0px 5px;">37</li><li style="box-sizing: border-box; padding: 0px 5px;">38</li><li style="box-sizing: border-box; padding: 0px 5px;">39</li><li style="box-sizing: border-box; padding: 0px 5px;">40</li><li style="box-sizing: border-box; padding: 0px 5px;">41</li><li style="box-sizing: border-box; padding: 0px 5px;">42</li><li style="box-sizing: border-box; padding: 0px 5px;">43</li><li style="box-sizing: border-box; padding: 0px 5px;">44</li><li style="box-sizing: border-box; padding: 0px 5px;">45</li><li style="box-sizing: border-box; padding: 0px 5px;">46</li><li style="box-sizing: border-box; padding: 0px 5px;">47</li><li style="box-sizing: border-box; padding: 0px 5px;">48</li><li style="box-sizing: border-box; padding: 0px 5px;">49</li><li style="box-sizing: border-box; padding: 0px 5px;">50</li><li style="box-sizing: border-box; padding: 0px 5px;">51</li><li style="box-sizing: border-box; padding: 0px 5px;">52</li><li style="box-sizing: border-box; padding: 0px 5px;">53</li><li style="box-sizing: border-box; padding: 0px 5px;">54</li><li style="box-sizing: border-box; padding: 0px 5px;">55</li><li style="box-sizing: border-box; padding: 0px 5px;">56</li><li style="box-sizing: border-box; padding: 0px 5px;">57</li><li style="box-sizing: border-box; padding: 0px 5px;">58</li><li style="box-sizing: border-box; padding: 0px 5px;">59</li><li style="box-sizing: border-box; padding: 0px 5px;">60</li><li style="box-sizing: border-box; padding: 0px 5px;">61</li><li style="box-sizing: border-box; padding: 0px 5px;">62</li><li style="box-sizing: border-box; padding: 0px 5px;">63</li><li style="box-sizing: border-box; padding: 0px 5px;">64</li><li style="box-sizing: border-box; padding: 0px 5px;">65</li><li style="box-sizing: border-box; padding: 0px 5px;">66</li><li style="box-sizing: border-box; padding: 0px 5px;">67</li><li style="box-sizing: border-box; padding: 0px 5px;">68</li><li style="box-sizing: border-box; padding: 0px 5px;">69</li><li style="box-sizing: border-box; padding: 0px 5px;">70</li><li style="box-sizing: border-box; padding: 0px 5px;">71</li><li style="box-sizing: border-box; padding: 0px 5px;">72</li><li style="box-sizing: border-box; padding: 0px 5px;">73</li><li style="box-sizing: border-box; padding: 0px 5px;">74</li><li style="box-sizing: border-box; padding: 0px 5px;">75</li><li style="box-sizing: border-box; padding: 0px 5px;">76</li><li style="box-sizing: border-box; padding: 0px 5px;">77</li><li style="box-sizing: border-box; padding: 0px 5px;">78</li><li style="box-sizing: border-box; padding: 0px 5px;">79</li><li style="box-sizing: border-box; padding: 0px 5px;">80</li><li style="box-sizing: border-box; padding: 0px 5px;">81</li><li style="box-sizing: border-box; padding: 0px 5px;">82</li><li style="box-sizing: border-box; padding: 0px 5px;">83</li><li style="box-sizing: border-box; padding: 0px 5px;">84</li><li style="box-sizing: border-box; padding: 0px 5px;">85</li><li style="box-sizing: border-box; padding: 0px 5px;">86</li><li style="box-sizing: border-box; padding: 0px 5px;">87</li><li style="box-sizing: border-box; padding: 0px 5px;">88</li></ul>

现在高德地图终于发布了新的支持ios9系统后台定位的导航地图包,并且发布了高德地图定位模块,支持一次定位的功能,能够一次定位到你的位置信息和cityCode。但是还存在应用在后台无网络不定位的可能被系统干掉的情况,建议仍旧ios原生定位的功能吧。

ios9.1以后,为了省电,应用切换到后台8分钟,不管是否是开启了后台定位服务,只要没有网络活动都有可能被挂起。所以你的应用切换到后台要保证8分钟之内有一次网络活动(如心跳等)。若用户打开应用去打电话,不知道网络没有了,等打10多分钟的电话,再去看应用,结果应用早挂了,这个问题很坑爹,暂时没有找到原因。不知道是高德定位搞的鬼还是最新的iphone系统的问题。估计是高德地图问题多些!

相关文章:

程序员必知的20个Python技巧

作者 | Duomly 译者 | 弯月&#xff0c;编辑 | 郭芮 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;Python是一门流行且应用广泛的通用编程语言&#xff0c;其应用包括数据科学、机器学习、科学计算等领域&#xff0c;以及后端Web开发、移动和桌面应用程序等方面。…

CSS float浮动的深入研究、详解及拓展(二)

为什么80%的码农都做不了架构师&#xff1f;>>> 接上回… 五、浮动的非本职工作 浮动的本职工作是让匿名inline boxes性质的文字环绕图片显示&#xff0c;而其他所有用浮动实现的效果都不是浮动应该做的事情&#xff0c;我称之为“非本职工作”。 或许我们并没有…

不需要显示地图 就获得用户当前经纬度 超简单的方法

1.遵循协议 CLLocationManagerDelegate,AMapSearchDelegate,AMapLocationManagerDelegate 2. API MAMapServices.sharedServices().apiKey APIKey AMapLocationServices.sharedServices().apiKey APIKey AMapSearchServices.sharedServices().apiKey APIKey AMapNaviService…

ELECTRA:超越BERT,2019年最佳NLP预训练模型

作者 | 李如来源 | NLPCAB&#xff08;ID:rgznai100&#xff09;【导读】BERT推出这一年来&#xff0c;除了XLNet&#xff0c;其他的改进都没带来太多惊喜&#xff0c;无非是越堆越大的模型和数据&#xff0c;以及动辄1024块TPU&#xff0c;让工程师们不知道如何落地。今天要介…

安装node和spm过程

2019独角兽企业重金招聘Python工程师标准>>> 安装nodejs 官网下载nodejs&#xff0c;我下的是v0.10.33版本&#xff0c;安装到d:\nodejs下。 1.新建目录d:\nodejs&#xff0c;在其中建立node_cache、node_global、node_modules三个目录。 2&#xff0c;将C:\Users…

经典网络LeNet-5介绍及代码测试(Caffe, MNIST, C++)

LeNet-5&#xff1a;包含7个层(layer)&#xff0c;如下图所示&#xff1a;输入层没有计算在内&#xff0c;输入图像大小为32*32*1&#xff0c;是针对灰度图进行训练和预测的。论文名字为” Gradient-Based Learning Applied to Document Recognition”&#xff0c;可以直接从ht…

根据经纬度获取用户当前位置信息

根据上篇文章获取的经纬度获取用户当前的位置信息 //获取用户所在位置信息ADDRESS func getUserAddress() { let latitude : CLLocationDegrees LATITUDES! let longitude : CLLocationDegrees LONGITUDES! print("latitude:\(latitude)") print("longitude…

刷了几千道算法题,我私藏的刷题网站都在这里了

作者 | Rocky0429 来源 | Python空间&#xff08;ID: Devtogether&#xff09;遥想当年&#xff0c;机缘巧合入了 ACM 的坑&#xff0c;周边巨擘林立&#xff0c;从此过上了"天天被虐似死狗"的生活...然而我是谁&#xff0c;我可是死狗中的战斗鸡&#xff0c;智力不够…

js实现点击li标签弹出其索引值

据说这是一道笔试题&#xff0c;以下是代码&#xff0c;没什么要文字叙述的&#xff0c;就是点击哪个<li>弹出哪个<li>的索引值即可&#xff1a; <html> <head> <style> li{width:50px;height:30px;margin:5px;float:left;text-align: center;li…

定时器开启和关闭

写程序时遇见了定时器&#xff0c;需要写入数据库用户的经纬 &#xff0c;还要读取&#xff0c;写好之后发现很费电 总结原因&#xff1a; 1&#xff1a;地图定位耗电&#xff08;这个根据程序要求&#xff0c;不能关闭&#xff0c;需要实时定位&#xff0c;很无奈&#xff…

一览群智胡健:在中国完全照搬Palantir模式,这不现实

作者 | Just出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;神秘的硅谷大数据挖掘公司 Palantir 是国内众多创业公司看齐的标杆&#xff0c;其业务是为政府和金融领域的大客户提供数据分析服务&#xff0c;帮助客户作出判断&#xff0c;甚至“预知未来”&#xff0c;…

ImageNet图像数据集介绍

ImageNet图像数据集始于2009年&#xff0c;当时李飞飞教授等在CVPR2009上发表了一篇名为《ImageNet: A Large-Scale Hierarchical Image Database》的论文&#xff0c;之后就是基于ImageNet数据集的7届ImageNet挑战赛(2010年开始)&#xff0c;2017年后&#xff0c;ImageNet由Ka…

cocos2dx 场景的切换

我们知道cocos2dx中可以由多个场景组成&#xff0c;那么我是如何来切换场景的呢首先我们先新建一个新的场景类&#xff0c;我推荐的方式是&#xff0c;在你工程的目录中找到一个classes的文件夹&#xff0c;里面有AppDelegate.cpp和AppDelegate.h还有HelloWorldScene.cpp和Hell…

IOS 后台挂起程序 当程序到后台后,继续完成定位任务

// 当应用程序掉到后台时&#xff0c;执行该方法 - (void)applicationDidEnterBackground:(UIApplication *)application { } 当一个 iOS 应用被送到后台,它的主线程会被暂停。你用 NSThread 的 detachNewThreadSelector:toTar get:withObject:类方法创建的线程也被挂起了。 我…

任正非:华为5G是瞎猫碰死老鼠

喜欢话糙理不糙的任正非&#xff0c;又飙金句。11月6日&#xff0c;在和彭博社记者对话时&#xff0c;谈到华为5G&#xff0c;他说&#xff1a;“回顾这个过程&#xff0c;我们也没有什么必胜的信心&#xff0c;有时候也是瞎猫碰上了死老鼠&#xff0c;刚好碰上世界是这个需求。…

网络文件系统(NFS)简介

网络文件系统(Network File System, NFS)是一种分布式文件系统协议&#xff0c;最初由Sun Microsystems公司开发&#xff0c;并于1984年发布。其功能旨在允许客户端主机可以像访问本地存储一样通过网络访问服务器端文件。NFS和其他许多协议一样&#xff0c;是基于开放网络运算远…

JAVA Static方法与单例模式的理解

最近用sonar测评代码质量的时候&#xff0c;发现一个问题&#xff0c;工程中一些util类&#xff0c;以前写的static方法都提示最好用单例的方式进行改正。为此&#xff0c;我仔细想了想&#xff0c;发现还是很有道理的。这里谈谈我个人对static方法与单例模式的理解。所谓单例模…

程序员的自我修养--链接、装载与库笔记:目标文件里有什么

编译器编译源代码后生成的文件叫做目标文件。目标文件从结构上讲&#xff0c;它是已经编译后的可执行文件格式&#xff0c;只是还没有经过链接的过程&#xff0c;其中可能有些符号或有些地址还没有被调整。其实它本身就是按照可执行文件格式存储的&#xff0c;只是跟真正的可执…

swift 中拨电话的实现

//MARK:_一键报警设置//MARK: - 弹出视图func createView() {var alertView : UIAlertView?alertView UIAlertView(title: "110", message: "", delegate: self, cancelButtonTitle: "取消", otherButtonTitles: "呼叫")alertView?…

T5,一个探索迁移学习边界的模型

作者 | Ajit Rajasekharan译者 | 夕颜出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;【导读】10月&#xff0c;Google 在《Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer》这篇论文中提出了一个最新的预训练模型 T5&#xff…

【Chat】实验 -- 实现 C/C++下TCP, 服务器/客户端 多人聊天室

本次实验利用TCP/IP, 语言环境为 C/C 利用套接字Socket编程&#xff0c;以及线程处理&#xff0c; 实现Server/CLient 之间多人的聊天系统的基本功能。 结果大致如&#xff1a; 下面贴上代码&#xff08;参考参考...) Server 部分&#xff1a; 1 /* TCPdtd.cpp - main, TCPdayt…

TeamViewer介绍:远程控制计算机

TeamViewer是一个可以远程控制计算机的程序&#xff0c;它也可以进行远程文件传输。TeamViewer支持的平台比较多&#xff0c;如Windows, Mac, Linux, ChromeOs, Android, iOS等&#xff0c;最新发布版本为14.x&#xff0c;它有个人免费和商业付费两种。只要对方告诉你他的TeamV…

PyTorch攻势凶猛,程序员正在抛弃TensorFlow?

来源 | The Gradient译者 | 夕颜出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;自 2012 年深度学习重新获得重视以来&#xff0c;许多机器学习框架便争相成为研究人员和行业从业人员的新宠。从早期的学术成果 Caffe 和 Theano &#xff0c;到背靠庞大工业支持的 PyT…

swift 错误集合 ------持续更新中

从今天开始凡是在用swift中遇到的错误都会在本博客持续更新 便于自己学习和快速开发 2017.7.20 如果你的程序写的有进入后台的方法&#xff0c;例如我的博客中点击home进入后台持续定位的那篇文章&#xff0c;发信进入后台后定位没有按得定时器规定的时间走&#xff0c;这…

【转载】【贪心】各种覆盖问题

1、独立区间问题 在N个区间里找出最多的互不覆盖的区间 对结束点进行排序&#xff0c;然后从结束点最小的区间开始进行选择即可 2、覆盖区间问题 给一个大区间&#xff0c;再给出N个小区间&#xff0c;求出最少用多少个区间可以把大区间覆盖完 先选出开始的一个&#xff0c;然后…

使用Python3发送邮件测试代码

SMTP(Simple Mail Trasfer Protocol)即简单邮件传输协议&#xff0c;它是一组用于由源地址到目的地址传送邮件的规则&#xff0c;用它来控制信件的中转方式。Python3对SMTP的支持有smtplib和email两个模块&#xff0c;smtplib负责发送电子邮件&#xff0c; email负责组织邮件内…

swift 通知中心 进入后台多久会通知用户关闭此功能

//添加本地通知 func addLocalNotification() { //定义本地通知对象 let notification : UILocalNotification UILocalNotification() //设置调用时间 notification.fireDate NSDate.init(timeIntervalSinceNow: 1800.0)//通知触发的时间&#xff0c;10s以后 notification.…

Python之父退休,C语言之父与世长辞,各大编程语言创始人现状盘点

作者 | 年素清 编辑 | 伍杏玲 来源 | 程序人生&#xff08;ID&#xff1a;coder_life&#xff09;从世界上第一台计算机(ENIAC) 于1946年2月在美国诞生至今的七十多年里&#xff0c;涌现出了许多优秀的计算机编程语言。程序员们在使用它们编写程序的时候&#xff0c;一定很好奇…

linux修正系统错误指令fsck和badblocks

fsck [-t文件系统][-ACay]装置名称-t 指定文件系统-A 扫描需要的装置-a 自动修复检查到有问题的扇区-y 与-a类似-C 在检查过程中&#xff0c;显示进度********************************************************** EXT2/EXT3额外选项功能&#xff1a;-f 强制检查-D 针对文件系…

Ubuntu定时任务crontab命令介绍

通过Linux上的crontab命令&#xff0c;我们可以在规定的间隔时间执行指定的系统指令或脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。 crontab默认在Ubuntu上是已经安装的&#xff0c;若未安装&#xff0c;则可执行以下命令进行安装&#xff1a; sudo …