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) {
        }];
    }
    
  • 相关阅读:
    JavaScript Date对象
    BOM 和 DOM
    JS变量声明方式
    CSS3 选择器
    Python文件操作
    第十三章 迭代器、生成器、 装饰器
    python专题 --- 递归
    React JSX
    ES6——面向对象应用
    ES6——面向对象-基础
  • 原文地址:https://www.cnblogs.com/sayimba/p/6053413.html
Copyright © 2011-2022 走看看