1

私のアプリケーション内で、ユーザーの位置の gps 座標をサーバーに投稿して保存しようとしています。これにより、最終的にすべてのユーザーの場所を表示するマップを設計できます。アプリからデータベースに渡されるデータを処理するために、HTTP get とカスタム PHP API を使用しています。私が抱えている問題は、didUpdateLocations が呼び出されるたびにサーバーを更新することです。時々動作しますが、クエリ文字列に未定義の変数があり、データベースに空白のデータが投稿されていると表示されることがあります。未定義の場合と未定義の場合があるのはなぜですか? また、データの受け渡しを処理するより良い方法はありますか? ASIHTTPRequest を使用する予定でしたが、ARC を使用しているため、役に立ちません。

コード:

- (void)postLocationUpdateFor:(NSString *)deviceToken withDeviceID:(NSString*)deviceID  withLatitude:(NSString *)latitude andLongitude:(NSString *)longitude {

    NSString *apiURL = [NSString stringWithFormat:ServerApiURL2, deviceToken, deviceID, latitude, longitude];
    NSData *dataURL = [NSData dataWithContentsOfURL:[NSURL URLWithString:apiURL]];
    NSString *strResult = [[NSString alloc] initWithData:dataURL encoding:NSUTF8StringEncoding];

    NSLog(@"%@", strResult);

}

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations {

    CLLocation *currentLocation = [locations lastObject];

    NSString *deviceToken = [[NSUserDefaults standardUserDefaults] stringForKey:@"deviceToken"];
    NSString *latitude = [NSString localizedStringWithFormat:@"%f",currentLocation.coordinate.latitude];
    NSString *longitude = [NSString localizedStringWithFormat:@"%f",currentLocation.coordinate.longitude];

    NSLog(@"Entered new Location with the coordinates Latitude: %@ Longitude: %@", latitude, longitude);

    [self postLocationUpdateFor:@"123" withDeviceID:deviceToken withLatitude:latitude andLongitude:longitude];
}
4

1 に答える 1

2
didUpdateLocations

あなたが実際にあなたの場所を失ったときに呼び出すことができます:エレベーター/建物に入った。そのため、時々空になります。

サーバーを送信する前に、その場所の値を確認して検証します。

于 2012-12-27T19:39:25.403 に答える