zoukankan      html  css  js  c++  java
  • ios-高德、百度后台定位并上传服务器

    一、配置高德或百度的后台定位框架和代码(略)。

    二、配置app不被系统kill,定时获取地理位置信息,并上传服务器(AppDelegate里面)。

    具体代码:

    1、

    - (void)applicationDidEnterBackground:(UIApplication *)application {
        
        //控制定时器不被kill
        UIApplication * app = [UIApplication sharedApplication];
        __block UIBackgroundTaskIdentifier bgTask;
        bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
            dispatch_async(dispatch_get_main_queue(), ^{
                if (bgTask != UIBackgroundTaskInvalid) {
                    bgTask = UIBackgroundTaskInvalid;
                }
            });
        }];
        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
            
            dispatch_async(dispatch_get_main_queue(), ^{
                if (bgTask != UIBackgroundTaskInvalid) {
                    bgTask = UIBackgroundTaskInvalid ;
                }
            });
        });
      
    }
    

     2、

    {
        //全局计时器
        NSTimer * timer;
    }
    
    -(void)turnOnTimer{
        //14400.0 秒调用一次
        timer = [NSTimer scheduledTimerWithTimeInterval:14400.0 target:self selector:@selector(pushGPSdata) userInfo:nil repeats:YES];
        [[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];
    }
    

     3、

    -(void)pushGPSdata{
        
        //_dicUrl 全局保存定位信息
        NSString * cityName = [NSString stringWithFormat:@"%@",_dicUrl[@"cityName"]];
        NSString * latitude = [NSString stringWithFormat:@"%@",_dicUrl[@"latitude"]];
        NSString * longitude = [NSString stringWithFormat:@"%@",_dicUrl[@"longitude"]];
        
        if (cityName.length !=0&&latitude.length !=0&&longitude.length !=0) {
            [self pushGPS:_dicUrl];
        }
    }
    -(void)pushGPS:(NSMutableDictionary*)dic{
        
        [com afPostRequestWithUrlString:trail_Url parms:dic finishedBlock:^(id responseObj) {
            
            NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:responseObj options:NSJSONReadingMutableLeaves error:nil];
            NSLog(@"%@",dic[@"message"]);
            NSString * userStatus = [NSString stringWithFormat:@"%@",dic[@"success"]];
            if ([userStatus isEqualToString:@"1"]) {
                NSLog(@"GPS成功");
            }else{
                NSLog(@"GPS失败");
            }
        } failedBlock:^(NSString *errorMsg) {
        }];
    }
    
  • 相关阅读:
    性能测试——监控前端性能
    centos7 查看防火墙状态
    Flutter项目实战之女装商城------火爆专区实现、商品分类数据准备
    鸿蒙系统,我要拥抱你~~
    【python3】python中 r'', b'', u'', f'' 的含义
    【python3】excel输入输出
    【python3】return和yield的区别
    【python3】spyder中清除变量命令
    【文章知识点】深度解析长末端重复反转录转座子(LTR-RTs)
    【python3】给List添加元素
  • 原文地址:https://www.cnblogs.com/sayimba/p/6053413.html
Copyright © 2011-2022 走看看