精华内容
下载资源
问答
  • 高德地图iOS SDK V2.5.0版本提供后台持续定位的能力,即便你的app退后台,且位置变动时,也不会被系统挂起,可持久记录位置信息。该功能适用于记轨迹录或者出行类App司机端。只需要您的做以下几步操作:1.添加...

    原来定位服务是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之前的系统:

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

    1
    _mapView.allowsBackgroundLocationUpdates = YES;

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

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

    
    @interface mainViewController()<NoticeCarViewDelegate,UIAlertViewDelegate,ServicingViewDelegate,MAMapViewDelegate,AMapSearchDelegate,UIActionSheetDelegate,PlaceSearchDeleagte,CLLocationManagerDelegate>
    {
    
        CLLocationManager *_locationManager;
    }
    
    - (void)initAMapProperty
    {
        FLDDLogDebug(@"函数");
        _locationManager = [[CLLocationManager alloc] init];
        _locationManager.delegate = self;
    
        _locationManager.pausesLocationUpdatesAutomatically = NO;
        if (IOS_VERSION_LARGE_OR_EQUAL(9.0))
        {
            _locationManager.allowsBackgroundLocationUpdates = YES;
        }
    
        if (![CLLocationManager locationServicesEnabled]) {
            NSLog(@"定位服务当前可能尚未打开,请设置打开!");
            return;
        }
    
        //如果没有授权则请求用户授权
        if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusNotDetermined)
        {
            [_locationManager requestAlwaysAuthorization];
        }
        else if([CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorizedAlways)
        {
            //设置代理
    //        _locationManager.delegate = self;
            //设置定位精度
            _locationManager.desiredAccuracy = kCLLocationAccuracyBest;
            //定位频率,每隔多少米定位一次
            CLLocationDistance distance = 10.0;//十米定位一次
            _locationManager.distanceFilter = distance;
            //启动跟踪定位
            [_locationManager startUpdatingLocation];
            FLDDLogDebug(@"开启定位");
        }
    
    //    //定位
    //    _mapView.showsUserLocation = YES;
        //地图跟着位置和方向移动
        [_mapView setUserTrackingMode:MAUserTrackingModeFollow  animated:YES];
    
        _mapView.showsCompass = NO;
        //楼块隐藏
        _mapView.buildingsDisabled=YES;
    //    //后台定位 可持久记录位置信息。高德地图iOS SDK V2.5.0版本提供后台持续定位的能力,即便你的app退到后台,且位置不变动时,也不会被系统挂起,可持久记录位置信息。该功能适用于记轨迹录或者出行类App司机端。
    //    if (IOS_VERSION_LARGE_OR_EQUAL(9)) {
    //        _mapView.allowsBackgroundLocationUpdates = YES;
    //    }
    //    else
        {
            //由于IOS9中定位的授权机制改变 需要进行手动授权
            _mapView.pausesLocationUpdatesAutomatically = NO;
        }
    
        //不能旋转
        _mapView.rotateEnabled=NO;
        _mapView.distanceFilter = DISTANCE_FILTER;
    //    _mapView.desiredAccuracy = kCLLocationAccuracyHundredMeters;
        //    mapView.showsScale = YES;
        //    [mapView setZoomLevel:KmaxLEVEL animated:NO];
        //自定义精度圈样式 去除精度圈
        _mapView.delegate = self;
    
        //纪录经纬度的数组
    //    coordates = [[NSMutableArray alloc] init];
    
    }
    
    
    
    #pragma mark 定位回调 能获取到定位点的经纬度坐标
    - (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations
    {
        [locations enumerateObjectsUsingBlock:^(CLLocation * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
            FLDDLogDebug(@"obj.coordinate = %.f \n %.f",obj.coordinate.latitude,obj.coordinate.longitude);
        }];
        FLDDLogDebug(@"");
    }
    
    
    

    现在高德地图终于发布了新的支持ios9系统后台定位的导航地图包,并且发布了高德地图定位模块,支持一次定位的功能,能够一次定位到你的位置信息和cityCode。若你的应用是需要始终需要允许定位,那么使用ios原生定位和高德地图的定位功能吧!防止再出现高德地图不能正确启动应用的定位功能。

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

    展开全文
  • APP首次启动提示开启定位服务

    千次阅读 2017-11-10 10:33:17
    最近项目中有用位置,以前都是进入需要位置信息的地方才去让用户打开定位,或者是用户安装APP的时候就让用户给APP赋予读取位置的权限,但是现在想要用户安装完App第一次启动的时候才去询问用户是否开启...

    最近在项目中有用到位置,以前都是在进入需要位置信息的地方才去让用户打开定位,或者是在用户安装APP的时候就让用户给APP赋予读取位置的权限,但是现在想要用户在安装完App第一次启动的时候才去询问用户是否开启定位。


    1.首先控制在第一次启动APP才会弹出,我们可以使用SharedPreferences

    public class CurrApplication extends BaseApplication{
        public boolean isPopUpGPSTip;
     //Leak Canary detect leak
    // private RefWatcher mRefWatcher;
     public static CurrApplication getInstance() {
      return instance;
     }
        
        @Override
     public void onCreate() {
      // TODO Auto-generated method stub
      super.onCreate();
      instance = this;
                    firstPopUpGPSTipInit();
          }
        private void firstPopUpGPSTipInit() {
      SharedPreferences shared = getSharedPreferences("shared", MODE_PRIVATE);
      isPopUpGPSTip = shared.getBoolean("isGPSTip", true);
     }
    }

    这里如果是第一次登陆,SharedPreferences不会有存数据,此时isPopUpGPSTip为true.


    2.在MainActivity去判断是否要弹出弹框提示

    /**
    	 * 第一次进入的要提示GPS定位
    	 */
    	private void needGPSTips(){
    		SharedPreferences shared = getSharedPreferences("shared", MODE_PRIVATE);
    		SharedPreferences.Editor editor = shared.edit();
    		if (CurrApplication.getInstance().isPopUpGPSTip) {
    			//第一次进入跳转  
    			editor.putBoolean("isGPSTip", false);
    			editor.commit();
    			openGPSSettings();
    		}
    	}
    
    /**
    	 * 跳转GPS设置
    	 */
    	private void openGPSSettings() {
    		if (!checkGPSIsOpen()) {
    			//没有打开则弹出对话框
    			new AlertDialog.Builder(this)
    					.setTitle(R.string.notifyTitle)
    					.setMessage(R.string.gpsNotifyMsg)
    					// 拒绝, 退出应用
    					.setNegativeButton(R.string.cancel,
    							new DialogInterface.OnClickListener() {
    								@Override
    								public void onClick(DialogInterface dialog, int which) {
    
    								}
    							})
    
    					.setPositiveButton(R.string.setting,
    							new DialogInterface.OnClickListener() {
    								@Override
    								public void onClick(DialogInterface dialog, int which) {
    									//跳转GPS设置界面
    									Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
    									startActivityForResult(intent, GPS_REQUEST_CODE);
    								}
    							})
    
    					.setCancelable(false)
    					.show();
    
    		}
    	}
    
    	/**
    	 * 检测GPS是否打开
    	 *
    	 * @return
    	 */
    	private boolean checkGPSIsOpen() {
    		boolean isOpen;
    		LocationManager locationManager = (LocationManager) this
    				.getSystemService(Context.LOCATION_SERVICE);
    		isOpen = locationManager.isProviderEnabled(android.location.LocationManager.GPS_PROVIDER);
    		return isOpen;
    	}

    如果用户已经是开启状态,那我们就不弹提示,如果不是,那就弹提示,最后的效果图如下:


    展开全文
  • 关于如何集成高德地图的定位,这里不再说了,高德地图官方文档上已经描述的很详细,这里主要说说,我们测试的时候定位正常,但有部分用户会反映定位不了,如何处理这类情况。 高德地图官方集成文档 关于运行时权限 ...
    关于如何集成高德地图的定位,这里不再说了,高德地图官方文档上已经描述的很详细,这里主要说说,我们测试的时候定位正常,但有部分用户会反映定位不了,如何处理这类情况。

    减少用户定位失败,需从下面几个方面进行分析:
    1、将高德SDK升级到最新版本,首先看下面一组统计,这是通过友盟统计,分析的到每天定位失败的人数。

    从折线图中可以明显的发现,从1号开始定位失败的人数明显下降,其中一部分原因是将SDK升级到最新的版本,另一部分原因后面会分析到。
    目前高德地图支持远程依赖添加库文件的方法,能自动保持最新的版本。
    在build.gradle中添加如下
    compile 'com.amap.api:search:latest.integration'
    compile 'com.amap.api:location:latest.integration'

    2、权限问题导致的定位失败。可能你会有疑问,代码中已经运行时权限申请,为啥还会因为权限导致定位失败checkSelfPermission检查是否需要获取权限,这个方法,在部分手机上无法判断。用户未授予权限,会返回0已授予权限的状态
    其中手机型号有:HUAWEICAZ-AL10、DOOVA6、H60-L02、PRA-AL00、HUAWEINXT-AL、LON-AL00、VTR-AL00,这里只列举部分机型。
    解决方法,我们在高德地图定位回调的时候,进行错误码判断,当错误码返回12或13的时候,自定义一个dialog,用户确定后跳转到应用设置界面,手动开启权限。
    cancelLoadingDialog();
    int errorCode = location.getErrorCode();
    String errorInfo = location.getErrorInfo();
    errorInfo = errorInfo.substring(0errorInfo.indexOf(" "));
    if (errorCode == 12 || errorCode == 13) {//缺少权限的定位,要用户手动打开
        showPermissionDialog();
    }



    3、因环境因素导致的定位失败,错误码为:2、4、6
    2为Wifi性能不足;6是定位依据不足,可能有wifi,但是是移动wifi。因为定位是依靠基站+WIFI,获取不到无法计算位置。4是网络异常,这个时候你会好奇,提示网络异常,为啥自己的后台日志还能上传。这是因为,网络是有波动的,定位的时候时候有问题,但是上传的时候网络好了,高德地图那边有以下情况会报4( 网络异错误 ):网络请求过程中异常,类似于unkonow host,无网络,网络差,请求超时

    4、错误码7,key错误,有些手机概率性获取不到报名,偶尔会报key错误。当然,如果所有的手机都是key错误,那么一定是包名和key不一致。


    展开全文
  • 定位服务中没有我自己的app

    千次阅读 2015-03-11 10:29:17
    -[BNLocationManager gpsFromExternal]: unrecognized selector sent to instance 0x...打开手机设置-隐私-定位 发现里面没有app的名字,也就是说定位开启与否都没有设置成功 但是用以下代码测试定位服务是否打

     -[BNLocationManager gpsFromExternal]:unrecognized selector sent to instance 0x1e597720


    追踪错误,发现gpsFromExternal没有获取到



    打开手机设置-隐私-定位 发现里面没有app的名字,也就是说定位开启与否都没有设置成功


    但是用以下代码测试定位服务是否打开时,得到的结果却是已经打开了

     CLAuthorizationStatus status = [CLLocationManagerauthorizationStatus];

        if (kCLAuthorizationStatusDenied == status ||kCLAuthorizationStatusRestricted == status) {

           NSLog( @"请打开您的位置服务!" );

        }else{

          NSLog( @"位置服务已打开!" );

        }


    检查是否申请了定位权限,本来是boolean型,朋友说改为string,可以还是不行




    最终我吧百度导航注册的2句代码注释后,然后通过html调用定位,这时候就弹出了



    可是这时候,取消百度导航代码的注释,程序又会报这个错。


    展开全文
  • 真机测试的时候发现隐私设置里的定位服务列表里没有我的app, 也没有提示我是否允许使用定位, 这样就无法开启定位服务了 请问这是什么问题? 补充:iphone4s上 隐私设置里是有的,但是了iphone5 和iphone...
  • 用appium测试android混合应用时,程序第一次切换webview时,可以正常进行自动化测试,但是当程序第二次切换webview时,appium会自动找到第一次打开的HTML页面,那么这时,appium就无法定位我们第二次打开的...
  • hbuilder APP 定位提示苹果审核通过

    千次阅读 2018-03-14 11:33:53
    APP已经提交给苹果进行审核了,今天看看审核结果,居然挂了,给了几点问题,其中有一点就是关于定位的问题: Guideline 5.1.5 - Legal - Privacy - Location Services Your app uses location services but does...
  • 转载地址: ... 1.导入类库: #import 2.判断APP用户手机是否开启了定位服务: 这里就要查看CLLocationManager的授权状态,此方法会返回当前授权状态: [CLLocationManager authorizationStatus]
  • 实现APP定位功能

    万次阅读 2016-11-27 22:29:04
    当升级SDK后百度定位一直返回505,通过百度定位官网查看该码表示AK非法或者存在。很纠结,于是自己又写了一个demo来研究一下百度定位以及大家使用百度定位经常出现的问题,特此记录。这篇文章我先将百度定位的实现...
  • APP自动化定位方法

    千次阅读 2018-04-20 15:04:20
    xpath定位和web上的不同点:先放一个图:第一,appium1.5及之后的版本废弃了name属性(如name=账单,将被支持用于定位),所以基本的定位就用下id就好了。其他的多说了。第二,下面就来说一下关于xpath的定位。...
  • STM官网下载的bootloader程序中并没有用到定时器等,很可能遇不到下面的问题。但是小猿猴如我等,会迫不及待的对其进行“魔改”,再经过二手三手,再加上运气不好,下面的问题就很容易暴露出来了: 现象:  ...
  • APP不到包及问题解决方法

    千次阅读 2021-01-25 16:21:39
    那怎么去解决抓不到包的问题呢? 单向认证 什么是单向认证? 简单来说,单向验证的就是是客户端主动去校验服务端的证书,看看其服务端证书是否为客户端所承认的证书,如果证书校验出错就会无法与其建立连接。...
  • 1.开始申请高德定位的key,可填写 manifest.json的地图sdk中,如果是第一次申请key,可以随意填写一个key或者一个其他已经申请的key填上就好, 目的是让app在获取 位置时报错,能够进行下一步: 此步可能出现...
  • 转载地址:http://201202212729.iteye.com/blog/1625779    我同学工程ndk22/bin/classes中 运行javah com.cn.ndk22.Ndk22.Activity ,出现了.h文件 ... 我bin/classes目录中 ,就是无法访问,  
  • 室内定位APP的实现

    千次阅读 2018-12-24 19:41:17
    0、写前面: 最近自学Android开发,主要是为了组里的...用户自定位中,主要利用组里的一些算法,一边验证一边用这个APP中。 2、记录: 以下为参考资料: 1. Map显示设计参考资料: 实现图片的多点触控:ht...
  • 因为我自己用CoreLocation试过,但是一直定位不准确,比如:我明明人登良路,但是定位的地址为南山大道那边去,误差很大!不知道是不是我代码写错了,求大神做个小项目,源代码给我看看,学习一下!
  • APP元素定位和操作

    千次阅读 2018-06-10 18:13:06
    自动化测试来说,核心技能就是对象的定位。不管是 web 页面上的一个按钮或输入框,还是移动 app 上的一个按钮或输框,我们要想对其进行点击或输入操作,前提是要先找到这个对象。对于手工测试来说,是由测试人员来...
  • 1)断点设置一个接口回调方法,如果不在回调方法中设置断点,而回调之前的方法中设置断点APP可正常调试 2)gradle未升级2.3.0前,app可以正常调试 (虽然APP能正常使用,但能正常调试,心理很爽,求...
  • 关于app内嵌h5页面调用百度地图定位问题,为什么定位不准呢?以下为代码。 百度地图:里面有3种定位方式...第3中定位方式手机端浏览器中定位没有问题,但放到app中就不行了。 setMap() { var that = this; ...
  • 目前的小程序开发中,为了更好的用户体验,以及信息推荐,我们难免要获取用户的授权拿到定位。所以uni-app的学习中,我决定将实现的步骤详细地记录下来,希望可以帮助更多的人! 使用的方法及api: 实现这个...
  • 为什么所有APP都想获取你的定位

    万次阅读 多人点赞 2021-04-09 10:44:28
    “平均每部手机每天会被 APP定位3691次,相册和个人文件每天被APP访问2432次,APP在后台每天尝试悄悄地启动783次,有超过40万个APP可以直接读取用户的剪切板。” 这是今年1月,小米MIUI隐私保护能力建设研发团队...
  • 蓝牙耳机 已连接 但就是找不到[【掉落某个角落找不到】解决方式 以安卓手机为例【苹果手机除外】 首先 手机连接耳机 将音量跳到最大 去【如果实在找不到 看第二点必杀技】 手机下载 蓝牙信号强度检测app 下载...
  • 这样设置打包上传到app store上,当然这只是第一步,接下来还有第二步。 2、你必须要提交app store审核之前,你的app描述这栏里面加上说明,说明你app里面有地位功能,以及地位功能的目的是什么。这
  • 我制作了一个用到geolocation定位的h5页面,让别人嵌到他开发的app中,用Safari浏览器时可以实现定位的,但是在app却做不到定位。貌似在app中嵌入网页是调用webkit,目前找不到问题所在,而且对objectc没有很多的...
  • App崩溃原因定位分析

    千次阅读 2016-10-16 11:30:28
    当iOS设备上的App应用闪退时,操作系统会生成一个crash日志,保存设备上。crash日志上有很多有用的信息,比如每个正在执行线程的完整堆栈跟踪信息和内存映像,这样就能够通过解析这些信息进而定位crash发生时的...
  • 现象:web端的网络请求OK,常用的APP主域名(测试环境/线上环境)都OK,包括htts请求接口,但是,一个新的APP的新域名就是死活抓不到! 检查步骤:  (1)APP前端功能是可以正常使用的,说明接口是正常的,只...
  • 细节描述: 功能需要实现:App 一直给后台上传经纬度。(正常运行,后台运行,锁屏运行) ...A点,App 锁屏,走B 点,然而A---B之间一直上传的是A点锁屏前的位置。 求大神指教?????
  • 怎么通过高德地图的坐标值实现自己的校园平面图的定位功能,需要有什么导航功能,只需要能够知道自己当前处在学校地图的哪个位置,这得怎么实现?求解

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 193,438
精华内容 77,375
关键字:

在定位服务找不到app