0

コードから 10 秒ごとにユーザーの場所を更新しようとしています。しかし、wifi から 3G に移行すると問題が発生します。すべての代替リクエストは、私の wifi がある場所から送信されます。何ができるでしょうか?

これが私のコードです

NSNumber *n1; NSNumber *n2;

    if([ud boolForKey:@"applicationActive"])
    {

        n1 = [NSNumber numberWithDouble:[map.userLocation coordinate].latitude];
        n2 = [NSNumber numberWithDouble:[map.userLocation coordinate].longitude];
    }
    else
    {
        CLLocationManager *locationManager = [[CLLocationManager alloc] init];
        locationManager.delegate = self;
        [locationManager startUpdatingLocation];
        n1 = [NSNumber numberWithDouble:locationManager.location.coordinate.latitude];
        n2 = [NSNumber numberWithDouble:locationManager.location.coordinate.longitude];
        [locationManager stopUpdatingLocation];
    }


    [dict setObject:[ud objectForKey:@"CurrentDriverID"] forKey:@"DriverId"];
    [dict setObject:[n1 stringValue] forKey:@"Latitude"];
    [dict setObject:[n2 stringValue] forKey:@"Longitude"];

    [requestG SaveDriverlocationWS:dict delegate:self];

注: これが発生すると、アプリケーションはフォアグラウンドにとどまります。SaveDriverlocationWS メソッドは、現在の場所をサーバーに保存します。

4

2 に答える 2

0

ロケーション マネージャーの精度レベルを設定していないようです。これを試して、状況が改善するかどうかを確認します。コードからは、ドライバー用のアプリを作成しているように見えます。この場合、精度レベルを使用することをお勧めします (フィルターは多くの電力を消費し、設計されているkCLLocationAccuracyBestForNavigationため、別のより適切なレベルを使用する必要があります)。電話機がカー ドックにあり、電源が入っている場合)。BestForNavigation

于 2012-08-12T12:41:50.033 に答える
0

私の理解のために。Wifi または 3G の使用はシステム レベルの設定です。CLLocationManager は現在のシステムのネットワークを使用してデバイスの位置を取得しますが、プログラマーには 3G/Wifi 間でネットワークを切り替える場所がありません。

于 2012-08-12T12:42:43.673 に答える