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) {
        }];
    }
    
  • 相关阅读:
    JSON.parse()和JSON.stringify()
    MySql 只能访问localhost 和 127.0.0.1访问 不能通过其他IP访问
    JavaScript 严格模式
    设计模式学习--单例模式
    golang 读写文件(一)
    eclipse 快捷键收藏
    Swift网络封装库Moya中文手册之Authentication
    Swift网络封装库Moya中文手册之Endpoints
    Swift网络封装库Moya中文手册之Plugins
    Swift网络封装库Moya中文手册之Providers
  • 原文地址:https://www.cnblogs.com/sayimba/p/6053413.html
Copyright © 2011-2022 走看看