如果位置更改或不使用 AFN 3,如何定期向服务器发送后台位置?
How to send background location to server periodically if location change or not using AFN 3?
我是 iOS 应用程序的新手 development.I 我打算使用 AFNetworking 3。0.I 想在后台更新位置并将其发送到服务器。将它发送到服务器时,我想调节:
1)如果位置不变,我想调用服务 sendblocation1
2)如果位置改变,我想调用服务 sendblocation2。
位置变化(近50米左右)。
请帮我....
我尝试了以下代码----
在 ViewDidLoad:
(void)viewDidLoad {
[super viewDidLoad];
locationManager = [[CLLocationManager alloc] init];
locationManager.distanceFilter = kCLDistanceFilterNone;
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
[locationManager startUpdatingLocation];
[locationManager requestAlwaysAuthorization];
float Lat = locationManager.location.coordinate.latitude;
float Long = locationManager.location.coordinate.longitude;
NSLog(@"Lat : %f Long : %f",Lat,Long);}
我要检查一下,如果我从服务器收到的响应是登录成功,那么只将位置发送到服务器,这就是我使用 if-else statement.like 以下内容的原因:
if ([_str isEqualToString:@"Login Success"]) {
UIAlertController *Loginalert= [UIAlertController
alertControllerWithTitle:@"Login Success"
message:@"This app is going to close now"
preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction* yesButton = [UIAlertAction
actionWithTitle:@"Ok"
style:UIAlertActionStyleDefault
handler:^(UIAlertAction * action)
{
if () {
[self sendlocation1];
} else {
[self sendlocation2];
}
[Loginalert dismissViewControllerAnimated:YES completion:nil];
}];
[Loginalert addAction: yesButton];
} else {
NSLog(@"Something Wrong");
最后
(void)sendlocation1{
}
(void)sendlocation2{
}
请帮帮我...如何检查位置是否发生变化? ...我应该在if条件下写什么并将其发送到服务器。
您可以使用 CLLocation 检查 2 (coord_A, coord_B) 坐标的位移。
CLLocationDistance distance = [coord_A distanceFromLocation:coord_B];
您接收到的距离将以米为单位。您可以使用获得的距离在 If-Else 循环中执行您的条件。
第一步
(void)viewDidLoad {
[super viewDidLoad];
locationManager = [[CLLocationManager alloc] init];
//set the amount of metres travelled before location update is made
[locationManager setDistanceFilter:50];
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
[locationManager startUpdatingLocation];
[locationManager requestAlwaysAuthorization];
// call the timer with 5 minutes cap using 5 * 60 = 300
[NSTimer scheduledTimerWithTimeInterval:300.0f target:self selector:@selector(sendlocation1) userInfo:nil repeats:YES];
第 2 步
每 50 米更换设备此方法调用:
-(void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation
{
NSLog(@"%f",newLocation.coordinate.latitude);
NSLog(@"%f",newLocation.coordinate.longitude);
CLLocationDistance meters = [newLocation distanceFromLocation:oldLocation];
if(meters >=50)
{
// call webservice for location is updated
[self sendlocation1];
}else
{
// call normal method
[self webservice_UpdateLocation];
}
}
}
-(void)webservice_UpdateLocation
{
if ([_str isEqualToString:@"Login Success"]) {
UIAlertController *Loginalert= [UIAlertController
alertControllerWithTitle:@"Login Success"
message:@"This app is going to close now"
preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction* yesButton = [UIAlertAction
actionWithTitle:@"Ok"
style:UIAlertActionStyleDefault
handler:^(UIAlertAction * action)
{
[self sendlocation2];
[Loginalert dismissViewControllerAnimated:YES completion:nil];
}];
[Loginalert addAction: yesButton];
} else {
NSLog(@"Something Wrong");
}
请检查此答案是否每 n 秒向服务器发送一次位置
我是 iOS 应用程序的新手 development.I 我打算使用 AFNetworking 3。0.I 想在后台更新位置并将其发送到服务器。将它发送到服务器时,我想调节: 1)如果位置不变,我想调用服务 sendblocation1 2)如果位置改变,我想调用服务 sendblocation2。 位置变化(近50米左右)。 请帮我.... 我尝试了以下代码---- 在 ViewDidLoad:
(void)viewDidLoad {
[super viewDidLoad];
locationManager = [[CLLocationManager alloc] init];
locationManager.distanceFilter = kCLDistanceFilterNone;
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
[locationManager startUpdatingLocation];
[locationManager requestAlwaysAuthorization];
float Lat = locationManager.location.coordinate.latitude;
float Long = locationManager.location.coordinate.longitude;
NSLog(@"Lat : %f Long : %f",Lat,Long);}
我要检查一下,如果我从服务器收到的响应是登录成功,那么只将位置发送到服务器,这就是我使用 if-else statement.like 以下内容的原因:
if ([_str isEqualToString:@"Login Success"]) {
UIAlertController *Loginalert= [UIAlertController
alertControllerWithTitle:@"Login Success"
message:@"This app is going to close now"
preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction* yesButton = [UIAlertAction
actionWithTitle:@"Ok"
style:UIAlertActionStyleDefault
handler:^(UIAlertAction * action)
{
if () {
[self sendlocation1];
} else {
[self sendlocation2];
}
[Loginalert dismissViewControllerAnimated:YES completion:nil];
}];
[Loginalert addAction: yesButton];
} else {
NSLog(@"Something Wrong");
最后
(void)sendlocation1{
}
(void)sendlocation2{
}
请帮帮我...如何检查位置是否发生变化? ...我应该在if条件下写什么并将其发送到服务器。
您可以使用 CLLocation 检查 2 (coord_A, coord_B) 坐标的位移。
CLLocationDistance distance = [coord_A distanceFromLocation:coord_B];
您接收到的距离将以米为单位。您可以使用获得的距离在 If-Else 循环中执行您的条件。
第一步
(void)viewDidLoad {
[super viewDidLoad];
locationManager = [[CLLocationManager alloc] init];
//set the amount of metres travelled before location update is made
[locationManager setDistanceFilter:50];
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
[locationManager startUpdatingLocation];
[locationManager requestAlwaysAuthorization];
// call the timer with 5 minutes cap using 5 * 60 = 300
[NSTimer scheduledTimerWithTimeInterval:300.0f target:self selector:@selector(sendlocation1) userInfo:nil repeats:YES];
第 2 步
每 50 米更换设备此方法调用:
-(void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation
{
NSLog(@"%f",newLocation.coordinate.latitude);
NSLog(@"%f",newLocation.coordinate.longitude);
CLLocationDistance meters = [newLocation distanceFromLocation:oldLocation];
if(meters >=50)
{
// call webservice for location is updated
[self sendlocation1];
}else
{
// call normal method
[self webservice_UpdateLocation];
}
}
}
-(void)webservice_UpdateLocation
{
if ([_str isEqualToString:@"Login Success"]) {
UIAlertController *Loginalert= [UIAlertController
alertControllerWithTitle:@"Login Success"
message:@"This app is going to close now"
preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction* yesButton = [UIAlertAction
actionWithTitle:@"Ok"
style:UIAlertActionStyleDefault
handler:^(UIAlertAction * action)
{
[self sendlocation2];
[Loginalert dismissViewControllerAnimated:YES completion:nil];
}];
[Loginalert addAction: yesButton];
} else {
NSLog(@"Something Wrong");
}
请检查此答案是否每 n 秒向服务器发送一次位置