浏览器版本低!无法浏览完整内容,建议升级或更换浏览器。

文档全面上新

更科技的视觉体验,更高效的页面结构,快前往体验吧!

体验新版
第1行: 第1行:
<div id="examples_center">
+
<div id="examples_center"><!-- 页面标题 --><div class="title-hd">后台持续定位</div><!-- 标题下子标题及简介,可有多个 --><div class="title-mi">功能场景</div><div class="wrap-mi">本示例展示了在应用退后台的状态下,如何持续记录位置信息,增加定位进程存活率。</div><!--  --></div><div class="demos_wrap"><div class="header"><div class="andiord-header active">Android</div><div class="ios-header">iOS</div></div><div class="andiord-wrap wrap"><div class="wrap-wp"><div class="wrap_left"><div class="left-video"><div class="img-bg-and"></div><div class="phone-android"><div class="video-wrap infor"><div class="video-control"></div><!-- 安卓视频位置 (不写协议)--><pre>//mapopen-website-wiki.bj.bcebos.com/demos/AndroidVideos/后台定位.mp4</pre>
    <!-- 页面标题 -->
+
</div><div class="video-icon-and"><div class="play play-and"></div><div class="stop stop-and"></div></div></div><div class="progressWrap-hide-and"></div><div id="videoControls-and"><div id="progressWrap-and"><div id="playProgress-and"></div></div></div></div><div class="left-qrCode"><!-- 安卓二维码位置 --><div class="qrCode-and">1590746640|//mapopen-website-wiki.bj.bcebos.com/demos/newqrcodes/后台持续定位.png</div><div>扫码体验</div></div></div><div class="wrap_right"><div class="wrap_right_nav"><div class="wrap_right_nav_l"><div>使用产品</div><div><!-- 安卓使用产品下选项,可有多个 --><!-- 产品1|/index.php?title=test --><div class="documentA">Android定位SDK|/index.php?title=android-locsdk</div><div>></div><div class="documentA">后台持续定位|/index.php?title=android-locsdk/guide/addition-func/android10-notice</div></div></div><div class="wrap_right_nav_r">下载源码</div><!-- 安卓源码地址 --><div class="github-url-and">//mapopen-website-wiki.bj.bcebos.com/demos/location/ForegroundLocationDemo.zip</div></div><div class="wrap_table"><div class="table_nav"><div class="left-icon"></div><div>核心接口</div></div><div class="table_wrap"><div class="table_wrap_title"><div>类</div><div>接口</div><div>描述</div></div><!-- 表格接口,可有多个 --><div class="table_wrap_con"><div class="table_wrap_w"><div><div class="table-wrap-className">LocationClient</div></div><div><div>start()</div></div><div><div>启动定位sdk</div></div></div><!--  --><div class="table_wrap_w"><div><div class="table-wrap-className">LocationClient</div></div><div><div>setLocOption(LocationClientOption locOption)</div></div><div><div>给定位客户端设置参数</div></div></div><div class="table_wrap_w"><div><div class="table-wrap-className">LocationClient</div></div><div><div>enableLocInForeground(int id, android.app.Notification notification)</div></div><div><div>将定位SDK的SERVICE设置成为前台服务, 提高定位进程存活率</div></div></div><div class="table_wrap_w"><div><div class="table-wrap-className">LocationClient</div></div><div><div>disableLocInForeground(boolean removeNotification)</div></div><div><div>关闭前台定位服务</div></div></div><div class="table_wrap_w"><div><div class="table-wrap-className">LocationClientOption</div></div><div><div>setScanSpan(int scanSpan)</div></div><div><div>连续定位时间间隔,单位是毫秒 当<1000(1s)时,定时定位无效</div></div></div><div class="table_wrap_w"><div><div class="table-wrap-className">BDAbstractLocationListener</div></div><div><div>onReceiveLocation(BDLocation location)</div></div><div><div>监听定位结果回调函数</div></div></div></div></div></div></div></div><div class="pre-nav"><div class="left-icon"></div><div>重点关注</div></div><div class="pre-nav" style="margin-left: 10px;"><div>为了保证定位可以在后台一直运行,开发者可以通过开启前台服务,来保证SDK服务的存活,达到后台定位效果。</div></div><div class="pre-nav"><div class="left-icon"></div><div>核心代码</div></div><div class="pre-nav"><div>1.创建前台通知服务</div></div><div class="pre-wrap"><div class="pre-wrap-nav"><div>JAVA</div></div><!-- 安卓示例代码位置 --><div class="pre-wrap-w pre-wrap-w-and"><pre class="prettyprint prettyprinted pre-and">/**
    <div class="title-hd">后台持续定位</div><!-- 标题下子标题及简介,可有多个 -->
+
    <div class="title-mi">功能场景</div>
+
    <div class="wrap-mi">本示例展示了在应用退后台的状态下,如何持续记录位置信息,增加定位进程存活率。</div><!--  -->
+
</div>
+
<div class="demos_wrap">
+
    <div class="header">
+
        <div class="andiord-header active">Android</div>
+
        <div class="ios-header">iOS</div>
+
    </div>
+
    <div class="andiord-wrap wrap">
+
        <div class="wrap-wp">
+
            <div class="wrap_left">
+
                <div class="left-video">
+
                    <div class="img-bg-and"></div>
+
                    <div class="phone-android">
+
                        <div class="video-wrap infor">
+
                            <div class="video-control"></div><!-- 安卓视频位置 (不写协议)-->
+
                            <pre>//mapopen-website-wiki.bj.bcebos.com/demos/AndroidVideos/后台定位.mp4</pre>
+
                        </div>
+
                        <div class="video-icon-and">
+
                            <div class="play play-and"></div>
+
                            <div class="stop stop-and"></div>
+
                        </div>
+
                    </div>
+
                    <div class="progressWrap-hide-and"></div>
+
                    <div id="videoControls-and">
+
                        <div id="progressWrap-and">
+
                            <div id="playProgress-and"></div>
+
                        </div>
+
                    </div>
+
                </div>
+
                <div class="left-qrCode">
+
                    <!-- 安卓二维码位置 -->
+
                    <div class="qrCode-and">1590746640|//mapopen-website-wiki.bj.bcebos.com/demos/newqrcodes/后台持续定位.png
+
                    </div>
+
                    <div>扫码体验</div>
+
                </div>
+
            </div>
+
            <div class="wrap_right">
+
                <div class="wrap_right_nav">
+
                    <div class="wrap_right_nav_l">
+
                        <div>使用产品</div>
+
                        <div>
+
                            <!-- 安卓使用产品下选项,可有多个 -->
+
                            <!-- 产品1|/index.php?title=test -->
+
                            <div class="documentA">Android定位SDK|/index.php?title=android-locsdk</div>
+
                            <div>></div>
+
                            <div class="documentA">
+
                                后台持续定位|/index.php?title=android-locsdk/guide/addition-func/android10-notice</div>
+
                        </div>
+
                    </div>
+
                    <div class="wrap_right_nav_r">下载源码</div><!-- 安卓源码地址 -->
+
                    <div class="github-url-and">
+
                        //mapopen-website-wiki.bj.bcebos.com/demos/location/ForegroundLocationDemo.zip</div>
+
                </div>
+
                <div class="wrap_table">
+
                    <div class="table_nav">
+
                        <div class="left-icon"></div>
+
                        <div>核心接口</div>
+
                    </div>
+
                    <div class="table_wrap">
+
                        <div class="table_wrap_title">
+
                            <div>类</div>
+
                            <div>接口</div>
+
                            <div>描述</div>
+
                        </div><!-- 表格接口,可有多个 -->
+
                        <div class="table_wrap_con">
+
                            <div class="table_wrap_w">
+
                                <div>
+
                                    <div class="table-wrap-className">LocationClient</div>
+
                                </div>
+
                                <div>
+
                                    <div>start()</div>
+
                                </div>
+
                                <div>
+
                                    <div>启动定位sdk</div>
+
                                </div>
+
                            </div><!--  -->
+
                            <div class="table_wrap_w">
+
                                <div>
+
                                    <div class="table-wrap-className">LocationClient</div>
+
                                </div>
+
                                <div>
+
                                    <div>setLocOption(LocationClientOption locOption)</div>
+
                                </div>
+
                                <div>
+
                                    <div>给定位客户端设置参数</div>
+
                                </div>
+
                            </div>
+
                            <div class="table_wrap_w">
+
                                <div>
+
                                    <div class="table-wrap-className">LocationClient</div>
+
                                </div>
+
                                <div>
+
                                    <div>enableLocInForeground(int id, android.app.Notification notification)</div>
+
                                </div>
+
                                <div>
+
                                    <div>将定位SDK的SERVICE设置成为前台服务, 提高定位进程存活率</div>
+
                                </div>
+
                            </div>
+
                            <div class="table_wrap_w">
+
                                <div>
+
                                    <div class="table-wrap-className">LocationClient</div>
+
                                </div>
+
                                <div>
+
                                    <div>disableLocInForeground(boolean removeNotification)</div>
+
                                </div>
+
                                <div>
+
                                    <div>关闭前台定位服务</div>
+
                                </div>
+
                            </div>
+
                            <div class="table_wrap_w">
+
                                <div>
+
                                    <div class="table-wrap-className">LocationClientOption</div>
+
                                </div>
+
                                <div>
+
                                    <div>setScanSpan(int scanSpan)</div>
+
                                </div>
+
                                <div>
+
                                    <div>连续定位时间间隔,单位是毫秒 当<1000(1s)时,定时定位无效</div> </div> </div> <div
+
                                            class="table_wrap_w">
+
                                            <div>
+
                                                <div class="table-wrap-className">BDAbstractLocationListener</div>
+
                                            </div>
+
                                            <div>
+
                                                <div>onReceiveLocation(BDLocation location)</div>
+
                                            </div>
+
                                            <div>
+
                                                <div>监听定位结果回调函数</div>
+
                                            </div>
+
                                    </div>
+
                                </div>
+
                            </div>
+
                        </div>
+
                    </div>
+
                </div>
+
                <div class="pre-nav">
+
                    <div class="left-icon"></div>
+
                    <div>重点关注</div>
+
                </div>
+
                <div class="pre-nav" style="margin-left: 10px;">
+
                    <div>为了保证定位可以在后台一直运行,开发者可以通过开启前台服务,来保证SDK服务的存活,达到后台定位效果。</div>
+
                </div>
+
                <div class="pre-nav">
+
                    <div class="left-icon"></div>
+
                    <div>核心代码</div>
+
                </div>
+
                <div class="pre-nav">
+
                    <div>1.创建前台通知服务</div>
+
                </div>
+
                <div class="pre-wrap">
+
                    <div class="pre-wrap-nav">
+
                        <div>JAVA</div>
+
                    </div><!-- 安卓示例代码位置 -->
+
                    <div class="pre-wrap-w pre-wrap-w-and">
+
                        <pre class="prettyprint prettyprinted pre-and">/**
+
 
* 初始化前台服务
 
* 初始化前台服务
 
*/
 
*/
第184行: 第28行:
 
}
 
}
 
                 </pre>
 
                 </pre>
                        <div class="pre-btn">
+
<div class="pre-btn"><div class="pre-btn-copy-and">复制</div><div class="pre-btn-cb-and">深色</div></div><div class="success">复制成功</div></div></div><div class="pre-nav"><div>2.将sdk服务设置为前台通知服务</div></div><div class="pre-wrap"><div class="pre-wrap-nav"><div>JAVA</div></div><!-- 安卓示例代码位置 --><div class="pre-wrap-w pre-wrap-w-and"><pre class="prettyprint prettyprinted pre-and">// 将定位SDK的SERVICE设置成为前台服务, 提高定位进程存活率
                            <div class="pre-btn-copy-and">复制</div>
+
                            <div class="pre-btn-cb-and">深色</div>
+
                        </div>
+
                        <div class="success">复制成功</div>
+
                    </div>
+
                </div>
+
                <div class="pre-nav">
+
                    <div>2.将sdk服务设置为前台通知服务</div>
+
                </div>
+
                <div class="pre-wrap">
+
                    <div class="pre-wrap-nav">
+
                        <div>JAVA</div>
+
                    </div><!-- 安卓示例代码位置 -->
+
                    <div class="pre-wrap-w pre-wrap-w-and">
+
                        <pre class="prettyprint prettyprinted pre-and">// 将定位SDK的SERVICE设置成为前台服务, 提高定位进程存活率
+
 
mClient.enableLocInForeground(1, mNotification);
 
mClient.enableLocInForeground(1, mNotification);
 
                 </pre>
 
                 </pre>
                        <div class="pre-btn">
+
<div class="pre-btn"><div class="pre-btn-copy-and">复制</div><div class="pre-btn-cb-and">深色</div></div><div class="success">复制成功</div></div></div><div class="pre-nav"><div>3.创建后台定位监听</div></div><div class="pre-wrap"><div class="pre-wrap-nav"><div>JAVA</div></div><!-- 安卓示例代码位置 --><div class="pre-wrap-w pre-wrap-w-and"><pre class="prettyprint prettyprinted pre-and">class  MyLocationListener extends BDAbstractLocationListener {
                            <div class="pre-btn-copy-and">复制</div>
+
                            <div class="pre-btn-cb-and">深色</div>
+
                        </div>
+
                        <div class="success">复制成功</div>
+
                    </div>
+
                </div>
+
                <div class="pre-nav">
+
                    <div>3.创建后台定位监听</div>
+
                </div>
+
                <div class="pre-wrap">
+
                    <div class="pre-wrap-nav">
+
                        <div>JAVA</div>
+
                    </div><!-- 安卓示例代码位置 -->
+
                    <div class="pre-wrap-w pre-wrap-w-and">
+
                        <pre class="prettyprint prettyprinted pre-and">class  MyLocationListener extends BDAbstractLocationListener {
+
 
     @Override
 
     @Override
 
     public void onReceiveLocation(BDLocation bdLocation) {
 
     public void onReceiveLocation(BDLocation bdLocation) {
第224行: 第38行:
 
}
 
}
 
                 </pre>
 
                 </pre>
                        <div class="pre-btn">
+
<div class="pre-btn"><div class="pre-btn-copy-and">复制</div><div class="pre-btn-cb-and">深色</div></div><div class="success">复制成功</div></div></div><div class="pre-nav"><div>4.配置后台连续定位参数并启动定位</div></div><div class="pre-wrap"><div class="pre-wrap-nav"><div>JAVA</div></div><!-- 安卓示例代码位置 --><div class="pre-wrap-w pre-wrap-w-and"><pre class="prettyprint prettyprinted pre-and">// 创建定位客户端
                            <div class="pre-btn-copy-and">复制</div>
+
                            <div class="pre-btn-cb-and">深色</div>
+
                        </div>
+
                        <div class="success">复制成功</div>
+
                    </div>
+
                </div>
+
                <div class="pre-nav">
+
                    <div>4.配置后台连续定位参数并启动定位</div>
+
                </div>
+
                <div class="pre-wrap">
+
                    <div class="pre-wrap-nav">
+
                        <div>JAVA</div>
+
                    </div><!-- 安卓示例代码位置 -->
+
                    <div class="pre-wrap-w pre-wrap-w-and">
+
                        <pre class="prettyprint prettyprinted pre-and">// 创建定位客户端
+
 
mClient = new LocationClient(this);
 
mClient = new LocationClient(this);
 
myLocationListener = new MyLocationListener();
 
myLocationListener = new MyLocationListener();
第256行: 第55行:
 
mClient.start();
 
mClient.start();
 
                 </pre>
 
                 </pre>
                        <div class="pre-btn">
+
<div class="pre-btn"><div class="pre-btn-copy-and">复制</div><div class="pre-btn-cb-and">深色</div></div><div class="success">复制成功</div></div></div><!-- <div class="more-nav">
                            <div class="pre-btn-copy-and">复制</div>
+
                            <div class="pre-btn-cb-and">深色</div>
+
                        </div>
+
                        <div class="success">复制成功</div>
+
                    </div>
+
                </div>
+
                <!-- <div class="more-nav">
+
 
             <div class="left-icon"></div>
 
             <div class="left-icon"></div>
 
             <div>更多功能</div>
 
             <div>更多功能</div>
第280行: 第72行:
 
                 <div class="documentA">添加文字和信息窗|/index.php?title=test</div>
 
                 <div class="documentA">添加文字和信息窗|/index.php?title=test</div>
 
             </div>
 
             </div>
         </div> -->
+
         </div> --></div><div class="ios-wrap wrap" style="display: none;"><div class="wrap-wp"><div class="wrap_left"><div class="left-video"><div class="img-bg-ios"></div><div class="phone-ios"><div class="video-wrap infor"><div class="video-control"></div><!-- ios视频位置 --><pre>//mapopen-website-wiki.bj.bcebos.com/demos/iosVideos/location/后台持续定位@1x.mp4</pre>
            </div>
+
</div><div class="video-icon-ios"><div class="play play-ios"></div><div class="stop stop-ios"></div></div></div><div class="progressWrap-hide-ios"></div><div id="videoControls-ios"><div id="progressWrap-ios"><div id="playProgress-ios"></div></div></div></div><div class="left-qrCode iosqrCode"><!-- ios二维码位置 --><div class="qrCode-ios">1590746640|//mapopen-website-wiki.bj.bcebos.com/demos/ioscodes/后台持续定位@1xios.png</div><div>扫码体验</div></div></div><div class="wrap_right"><div class="wrap_right_nav"><div class="wrap_right_nav_l"><div>使用产品</div><div><!-- IOS使用产品下选项,可有多个 --><!-- 产品1|/index.php?title=test --><div class="documentA">iOS定位SDK|/index.php?title=ios-locsdk</div><!--  --></div></div><div class="wrap_right_nav_r">下载源码</div><!-- IOS源码地址 --><div class="github-url-ios">//mapopen-website-wiki.bj.bcebos.com/demos/location/ForegroundLocationSDKDemo.zip</div></div><div class="wrap_table"><div class="table_nav"><div class="left-icon"></div><div>核心接口</div></div><div class="table_wrap"><div class="table_wrap_title"><div>类</div><div>接口</div><div>描述</div></div><!-- ios表格接口内容,可有多个 --><!-- 表格接口,可有多个 --><div class="table_wrap_con"><div class="table_wrap_w"><div><div class="table-wrap-className">BMKLocationManager</div></div><div><div>- (void)startUpdatingLocation;</div></div><div><div>开始连续定位</div></div></div><div class="table_wrap_w"><div><div class="table-wrap-className">BMKLocationManager</div></div><div><div>- (void)stopUpdatingLocation;</div></div><div><div>停止连续定位</div></div></div><div class="table_wrap_w"><div><div class="table-wrap-className">BMKLocationManager</div></div><div><div>- (void)BMKLocationManager:(BMKLocationManager * _Nonnull)manager doRequestAlwaysAuthorization:(CLLocationManager * _Nonnull)locationManager;</div></div><div><div>后台定位权限请求。为了适配app store关于新的后台定位的审核机制当开发者在plist配置NSLocationAlwaysUsageDescription或者NSLocationAlwaysAndWhenInUseUsageDescription时,<br/>///需要在该delegate中调用后台定位api:[locationManager requestAlwaysAuthorization]</div></div></div><div class="table_wrap_w"><div><div class="table-wrap-className">BMKLocationManager</div></div><div><div>- (void)BMKLocationManager:(BMKLocationManager *)manager didUpdateLocation:(BMKLocation *)location orError:(NSError *)error;</div></div><div><div>连续定位回调函数</div></div></div></div></div></div></div></div><div class="pre-nav"><div class="left-icon"></div><div>重点关注</div></div><div class="pre-nav" style="margin-left: 10px;"><div style="line-height: 26px;">为了保证定位可以在后台一直运行,开发者需配置info.pist、 申请后台定位权限、开启 TARGETS->Capabilities->Background Modes,来保证SDK服务的存活,达到后台定位效果。</div></div><div class="pre-nav"><div class="left-icon"></div><div>核心代码</div></div><div class="pre-nav"><div>1.创建定位管理类对象,关键属性allowsBackgroundLocationUpdates设置为YES</div></div><div class="pre-wrap"><div class="pre-wrap-nav"><div>Objective-C</div></div><div class="pre-wrap-w pre-wrap-w-ios code_container"><!-- ios示例代码位置 --><pre class="prettyprint prettyprinted pre-ios">_locationManager = [[BMKLocationManager alloc] init];
            <div class="ios-wrap wrap" style="display: none;">
+
                <div class="wrap-wp">
+
                    <div class="wrap_left">
+
                        <div class="left-video">
+
                            <div class="img-bg-ios"></div>
+
                            <div class="phone-ios">
+
                                <div class="video-wrap infor">
+
                                    <div class="video-control"></div><!-- ios视频位置 -->
+
                                    <pre>//mapopen-website-wiki.bj.bcebos.com/demos/iosVideos/location/后台持续定位@1x.mp4</pre>
+
                                </div>
+
                                <div class="video-icon-ios">
+
                                    <div class="play play-ios"></div>
+
                                    <div class="stop stop-ios"></div>
+
                                </div>
+
                            </div>
+
                            <div class="progressWrap-hide-ios"></div>
+
                            <div id="videoControls-ios">
+
                                <div id="progressWrap-ios">
+
                                    <div id="playProgress-ios"></div>
+
                                </div>
+
                            </div>
+
                        </div>
+
                        <div class="left-qrCode iosqrCode">
+
                            <!-- ios二维码位置 -->
+
                            <div class="qrCode-ios">
+
                                1590746640|//mapopen-website-wiki.bj.bcebos.com/demos/ioscodes/地理围栏@1xios.png</div>
+
                            <div>扫码体验</div>
+
                        </div>
+
                    </div>
+
                    <div class="wrap_right">
+
                        <div class="wrap_right_nav">
+
                            <div class="wrap_right_nav_l">
+
                                <div>使用产品</div>
+
                                <div>
+
                                    <!-- IOS使用产品下选项,可有多个 -->
+
                                    <!-- 产品1|/index.php?title=test -->
+
                                    <div class="documentA">iOS定位SDK|/index.php?title=ios-locsdk</div><!--  -->
+
                                </div>
+
                            </div>
+
                            <div class="wrap_right_nav_r">下载源码</div><!-- IOS源码地址 -->
+
                            <div class="github-url-ios">//mapopen-website-wiki.bj.bcebos.com/demos/location/ForegroundLocationSDKDemo.zip</div>
+
                        </div>
+
                        <div class="wrap_table">
+
                            <div class="table_nav">
+
                                <div class="left-icon"></div>
+
                                <div>核心接口</div>
+
                            </div>
+
                            <div class="table_wrap">
+
                                <div class="table_wrap_title">
+
                                    <div>类</div>
+
                                    <div>接口</div>
+
                                    <div>描述</div>
+
                                </div><!-- ios表格接口内容,可有多个 -->
+
                                <!-- 表格接口,可有多个 -->
+
                                <div class="table_wrap_con">
+
                                    <div class="table_wrap_w">
+
                                        <div>
+
                                            <div class="table-wrap-className">BMKLocationManager</div>
+
                                        </div>
+
                                        <div>
+
                                            <div>- (void)startUpdatingLocation;</div>
+
                                        </div>
+
                                        <div>
+
                                            <div>开始连续定位</div>
+
                                        </div>
+
                                    </div>
+
                                    <div class="table_wrap_w">
+
                                        <div>
+
                                            <div class="table-wrap-className">BMKLocationManager</div>
+
                                        </div>
+
                                        <div>
+
                                            <div>- (void)stopUpdatingLocation;</div>
+
                                        </div>
+
                                        <div>
+
                                            <div>停止连续定位</div>
+
                                        </div>
+
                                    </div>
+
                                    <div class="table_wrap_w">
+
                                        <div>
+
                                            <div class="table-wrap-className">BMKLocationManager</div>
+
                                        </div>
+
                                        <div>
+
                                            <div>- (void)BMKLocationManager:(BMKLocationManager * _Nonnull)manager doRequestAlwaysAuthorization:(CLLocationManager * _Nonnull)locationManager;</div>
+
                                        </div>
+
                                        <div>
+
                                            <div>后台定位权限请求。为了适配app store关于新的后台定位的审核机制当开发者在plist配置NSLocationAlwaysUsageDescription或者NSLocationAlwaysAndWhenInUseUsageDescription时,<br/> ///需要在该delegate中调用后台定位api:[locationManager requestAlwaysAuthorization]</div>
+
                                        </div>
+
                                    </div>
+
                                    <div class="table_wrap_w">
+
                                        <div>
+
                                            <div class="table-wrap-className">BMKLocationManager</div>
+
                                        </div>
+
                                        <div>
+
                                            <div>- (void)BMKLocationManager:(BMKLocationManager *)manager didUpdateLocation:(BMKLocation *)location orError:(NSError *)error;</div>
+
                                        </div>
+
                                        <div>
+
                                            <div>连续定位回调函数</div>
+
                                        </div>
+
                                    </div>
+
                                </div>
+
                            </div>
+
                        </div>
+
                    </div>
+
                </div>
+
                <div class="pre-nav">
+
                    <div class="left-icon"></div>
+
                    <div>重点关注</div>
+
                </div>
+
                <div class="pre-nav" style="margin-left: 10px;">
+
                    <div style="line-height: 26px;">为了保证定位可以在后台一直运行,开发者需配置info.pist、 申请后台定位权限、开启 TARGETS->Capabilities->Background Modes,来保证SDK服务的存活,达到后台定位效果。</div>
+
                </div>
+
                <div class="pre-nav">
+
                    <div class="left-icon"></div>
+
                    <div>核心代码</div>
+
                </div>
+
                <div class="pre-nav">
+
                    <div>1.创建定位管理类对象,关键属性allowsBackgroundLocationUpdates设置为YES</div>
+
                </div>
+
                <div class="pre-wrap">
+
                    <div class="pre-wrap-nav">
+
                        <div>Objective-C</div>
+
                    </div>
+
                    <div class="pre-wrap-w pre-wrap-w-ios code_container">
+
                        <!-- ios示例代码位置 -->
+
                        <pre class="prettyprint prettyprinted pre-ios">
+
_locationManager = [[BMKLocationManager alloc] init];
+
 
// 设置返回位置的坐标系类型
 
// 设置返回位置的坐标系类型
 
_locationManager.coordinateType = BMKLocationCoordinateTypeBMK09LL;
 
_locationManager.coordinateType = BMKLocationCoordinateTypeBMK09LL;
第429行: 第95行:
 
                  
 
                  
 
                         </pre>
 
                         </pre>
                        <div class="pre-btn">
+
<div class="pre-btn"><div class="pre-btn-copy-ios">复制</div><div class="pre-btn-cb-ios">深色</div></div><div class="success">复制成功</div></div></div><div class="pre-nav"><div>2.请求后台定位权限</div></div><div class="pre-wrap"><div class="pre-wrap-nav"><div>Objective-C</div></div><div class="pre-wrap-w pre-wrap-w-ios code_container"><!-- ios示例代码位置 --><pre class="prettyprint prettyprinted pre-ios">- (void)BMKLocationManager:(BMKLocationManager * _Nonnull)manager doRequestAlwaysAuthorization:(CLLocationManager * _Nonnull)locationManager {
                            <div class="pre-btn-copy-ios">复制</div>
+
                            <div class="pre-btn-cb-ios">深色</div>
+
                        </div>
+
                        <div class="success">复制成功</div>
+
                    </div>
+
                </div>
+
                <div class="pre-nav">
+
                    <div>2.请求后台定位权限</div>
+
                </div>
+
                <div class="pre-wrap">
+
                    <div class="pre-wrap-nav">
+
                        <div>Objective-C</div>
+
                    </div>
+
                    <div class="pre-wrap-w pre-wrap-w-ios code_container">
+
                        <!-- ios示例代码位置 -->
+
                        <pre class="prettyprint prettyprinted pre-ios">
+
- (void)BMKLocationManager:(BMKLocationManager * _Nonnull)manager doRequestAlwaysAuthorization:(CLLocationManager * _Nonnull)locationManager {
+
 
     [locationManager requestAlwaysAuthorization];
 
     [locationManager requestAlwaysAuthorization];
 
}
 
}
 
                                        
 
                                        
 
                         </pre>
 
                         </pre>
                        <div class="pre-btn">
+
<div class="pre-btn"><div class="pre-btn-copy-ios">复制</div><div class="pre-btn-cb-ios">深色</div></div><div class="success">复制成功</div></div></div><div class="pre-nav"><div>3.实现定位回调代理方法</div></div><div class="pre-wrap"><div class="pre-wrap-nav"><div>Objective-C</div></div><div class="pre-wrap-w pre-wrap-w-ios code_container"><!-- ios示例代码位置 --><pre class="prettyprint prettyprinted pre-ios">- (void)BMKLocationManager:(BMKLocationManager *)manager didUpdateLocation:(BMKLocation *)location orError:(NSError *)error {
                            <div class="pre-btn-copy-ios">复制</div>
+
                            <div class="pre-btn-cb-ios">深色</div>
+
                        </div>
+
                        <div class="success">复制成功</div>
+
                    </div>
+
                </div>
+
                <div class="pre-nav">
+
                    <div>3.实现定位回调代理方法</div>
+
                </div>
+
                <div class="pre-wrap">
+
                    <div class="pre-wrap-nav">
+
                        <div>Objective-C</div>
+
                    </div>
+
                    <div class="pre-wrap-w pre-wrap-w-ios code_container">
+
                        <!-- ios示例代码位置 -->
+
                        <pre class="prettyprint prettyprinted pre-ios">
+
- (void)BMKLocationManager:(BMKLocationManager *)manager didUpdateLocation:(BMKLocation *)location orError:(NSError *)error {
+
 
     // 定位错误信息
 
     // 定位错误信息
 
     if (error) {
 
     if (error) {
         NSLog(@"locError:{%zd - %@};", error.code, error.localizedDescription);
+
         NSLog(@"locError:{%zd -&nbsp;%@};", error.code, error.localizedDescription);
 
         return;
 
         return;
 
     }
 
     }
第488行: 第120行:
  
 
                         </pre>
 
                         </pre>
                        <div class="pre-btn">
+
<div class="pre-btn"><div class="pre-btn-copy-ios">复制</div><div class="pre-btn-cb-ios">深色</div></div><div class="success">复制成功</div></div></div><div class="pre-nav"><div>4.开始后台定位</div></div><div class="pre-wrap"><div class="pre-wrap-nav"><div>Objective-C</div></div><div class="pre-wrap-w pre-wrap-w-ios code_container"><!-- ios示例代码位置 --><pre class="prettyprint prettyprinted pre-ios">[self.locationManager startUpdatingLocation];
                            <div class="pre-btn-copy-ios">复制</div>
+
                            <div class="pre-btn-cb-ios">深色</div>
+
                        </div>
+
                        <div class="success">复制成功</div>
+
                    </div>
+
                </div>
+
                <div class="pre-nav">
+
                    <div>4.开始后台定位</div>
+
                </div>
+
                <div class="pre-wrap">
+
                    <div class="pre-wrap-nav">
+
                        <div>Objective-C</div>
+
                    </div>
+
                    <div class="pre-wrap-w pre-wrap-w-ios code_container">
+
                        <!-- ios示例代码位置 -->
+
                        <pre class="prettyprint prettyprinted pre-ios">
+
[self.locationManager startUpdatingLocation];
+
  
 
                         </pre>
 
                         </pre>
                        <div class="pre-btn">
+
<div class="pre-btn"><div class="pre-btn-copy-ios">复制</div><div class="pre-btn-cb-ios">深色</div></div><div class="success">复制成功</div></div></div><div class="pre-nav"><div>5.停止后台定位</div></div><div class="pre-wrap"><div class="pre-wrap-nav"><div>Objective-C</div></div><div class="pre-wrap-w pre-wrap-w-ios code_container"><!-- ios示例代码位置 --><pre class="prettyprint prettyprinted pre-ios">[self.locationManager stopUpdatingLocation];
                            <div class="pre-btn-copy-ios">复制</div>
+
                            <div class="pre-btn-cb-ios">深色</div>
+
                        </div>
+
                        <div class="success">复制成功</div>
+
                    </div>
+
                </div>
+
                <div class="pre-nav">
+
                    <div>5.停止后台定位</div>
+
                </div>
+
                <div class="pre-wrap">
+
                    <div class="pre-wrap-nav">
+
                        <div>Objective-C</div>
+
                    </div>
+
                    <div class="pre-wrap-w pre-wrap-w-ios code_container">
+
                        <!-- ios示例代码位置 -->
+
                        <pre class="prettyprint prettyprinted pre-ios">
+
[self.locationManager stopUpdatingLocation];
+
 
                  
 
                  
  
 
                         </pre>
 
                         </pre>
                        <div class="pre-btn">
+
<div class="pre-btn"><div class="pre-btn-copy-ios">复制</div><div class="pre-btn-cb-ios">深色</div></div><div class="success">复制成功</div></div></div>
                            <div class="pre-btn-copy-ios">复制</div>
+
                            <div class="pre-btn-cb-ios">深色</div>
+
                        </div>
+
                        <div class="success">复制成功</div>
+
                    </div>
+
                </div>
+
               
+
  
            </div>
+
</div></div>
        </div>
+

2020年12月15日 (二) 11:46的版本

后台持续定位
功能场景
本示例展示了在应用退后台的状态下,如何持续记录位置信息,增加定位进程存活率。
Android
iOS
//mapopen-website-wiki.bj.bcebos.com/demos/AndroidVideos/后台定位.mp4
1590746640|//mapopen-website-wiki.bj.bcebos.com/demos/newqrcodes/后台持续定位.png
扫码体验
使用产品
Android定位SDK|/index.php?title=android-locsdk
>
后台持续定位|/index.php?title=android-locsdk/guide/addition-func/android10-notice
下载源码
//mapopen-website-wiki.bj.bcebos.com/demos/location/ForegroundLocationDemo.zip
核心接口
接口
描述
LocationClient
start()
启动定位sdk
LocationClient
setLocOption(LocationClientOption locOption)
给定位客户端设置参数
LocationClient
enableLocInForeground(int id, android.app.Notification notification)
将定位SDK的SERVICE设置成为前台服务, 提高定位进程存活率
LocationClient
disableLocInForeground(boolean removeNotification)
关闭前台定位服务
LocationClientOption
setScanSpan(int scanSpan)
连续定位时间间隔,单位是毫秒 当<1000(1s)时,定时定位无效
BDAbstractLocationListener
onReceiveLocation(BDLocation location)
监听定位结果回调函数
重点关注
为了保证定位可以在后台一直运行,开发者可以通过开启前台服务,来保证SDK服务的存活,达到后台定位效果。
核心代码
1.创建前台通知服务
JAVA
/**
* 初始化前台服务
*/
private void initNotification () {
    //设置后台定位
    //android8.0及以上使用NotificationUtils
    if (Build.VERSION.SDK_INT >= 26) {
        NotificationUtils notificationUtils = new NotificationUtils(this);
        Notification.Builder builder = notificationUtils.getAndroidChannelNotification
                ("适配android 8限制后台定位功能", "正在后台定位");
        mNotification = builder.build();
    } else {
        //获取一个Notification构造器
        Notification.Builder builder = new Notification.Builder(MainActivity.this);
        Intent nfIntent = new Intent(MainActivity.this, MainActivity.class);

        builder.setContentIntent(PendingIntent.
                getActivity(MainActivity.this, 0, nfIntent, 0)) // 设置PendingIntent
                .setContentTitle("适配android 8限制后台定位功能") // 设置下拉列表里的标题
                .setSmallIcon(R.mipmap.ic_launcher) // 设置状态栏内的小图标
                .setContentText("正在后台定位") // 设置上下文内容
                .setWhen(System.currentTimeMillis()); // 设置该通知发生的时间

        mNotification = builder.build(); // 获取构建好的Notification
    }
    mNotification.defaults = Notification.DEFAULT_SOUND; //设置为默认的声音
}
                
复制
深色
复制成功
2.将sdk服务设置为前台通知服务
JAVA
// 将定位SDK的SERVICE设置成为前台服务, 提高定位进程存活率
mClient.enableLocInForeground(1, mNotification);
                
复制
深色
复制成功
3.创建后台定位监听
JAVA
class  MyLocationListener extends BDAbstractLocationListener {
    @Override
    public void onReceiveLocation(BDLocation bdLocation) {
    //   此处获取后台定位数据
    }
}
                
复制
深色
复制成功
4.配置后台连续定位参数并启动定位
JAVA
// 创建定位客户端
mClient = new LocationClient(this);
myLocationListener = new MyLocationListener();
// 注册定位监听
mClient.registerLocationListener(myLocationListener);
LocationClientOption mOption = new LocationClientOption();
// 可选,默认0,即仅定位一次,设置发起连续定位请求的间隔需要大于等于1000ms才是有效的
mOption.setScanSpan(2000);
// 可选,默认gcj02,设置返回的定位结果坐标系,如果配合百度地图使用,建议设置为bd09ll;
mOption.setCoorType("bd09ll");
// 可选,默认false,设置是否开启Gps定位
mOption.setOpenGps(true);
// 设置定位参数
mClient.setLocOption(mOption);
// 启动定位
mClient.start();
                
复制
深色
复制成功
  • 文档根本没法用

  • 文档水平很差

  • 文档水平一般

  • 文档不错

  • 文档写的很好

如发现文档错误,或对此文档有更好的建议,请在下方反馈。问题咨询请前往反馈平台提交工单咨询。

提交反馈

拖动标注工具

添加矩形标注

添加箭头标注

完成

取消