• 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) {
        }];
    }
    
  • 相关阅读:
    3D Bezier Curve, Matlab Code
    Matlab Bezier
    python与matlab混合编程
    Matlab P文件——加快Matlab程序,保护你的算法(z)
    Simens NX (原UG)内部代码逆向分析 / Inner code Reverse analysis of NX software
    Matlab扩展编程
    《数值分析及其MATLAB实现》(任玉杰)扫描版[PDF]
    NURBS Toolbox by D.M. Spink (matlab)
    贝塞尔曲线
    BSpline & NURBS (Matlab Code)
  • 原文地址:https://www.cnblogs.com/sayimba/p/6053413.html
Copyright © 2020-2023  润新知