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) {
        }];
    }
    
  • 相关阅读:
    Codeforces Round #271 (Div. 2) F. Ant colony 线段树
    poj 1744 tree 树分治
    HDU Shell Necklace CDQ分治+FFT
    BZOJ 1567: [JSOI2008]Blue Mary的战役地图 矩阵二维hash
    BZOJ 1042: [HAOI2008]硬币购物 容斥+背包
    HDU 6078 Wavel Sequence 树状数组优化DP
    Gym
    HDU 6058 Kanade's sum 二分,链表
    HDU 6061 RXD and functions NTT
    ZOJ 3233 Lucky Number 容斥原理
  • 原文地址:https://www.cnblogs.com/sayimba/p/6053413.html
Copyright © 2011-2022 走看看