1

だから、私は他の関連するスレッドをフォローしましたが、何らかの理由でまだこのエラーが発生していて、髪を引き裂く準備ができています。locationManager:didFailWithErrorを実装して、ユーザーが現在の場所の使用を「許可しない」を選択したかどうかを確認しました。

-(void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error {
NSLog(@"IN ERROR");
if ([error code] == kCLErrorDenied){  
 [manager stopUpdatingLocation];
 }
}

ただし、ユーザーが「許可しない」を選択すると、常に次のエラーが表示されます...これは奇妙なことです。特に、「エラー中」というテキストが表示される順序は奇妙です。

ERROR、Time、293420691.000、Function、 "void CLClientHandleDaemonDataRegistration(__ CLClient *、const CLDaemonCommToClientRegistration *、const __CFDictionary *)"、サーバーはクライアント登録を受け入れませんでした1 2010-04-19 21:44:51.000 testApp [1414:207] IN ERROR

そのため、didFailWithError関数に入る前でも、このエラーを出力しています。誰かが何が起こっているのかについて何か考えを持っていますか?locationManagerコードの残りの部分は次のとおりです。

self.locationManager = [[[CLLocationManager alloc] init] autorelease];
locationManager.delegate = self;
locationManager.desiredAccuracy = kCLLocationAccuracyKilometer;
locationManager.distanceFilter = 2;  
[locationManager startUpdatingLocation];
4

2 に答える 2

0

CoreLocationからの単なる情報メッセージのように見えます。アプリがクラッシュすることはなく、ユーザーには表示されず、正しいエラーコードでdidFailWithErrorが呼び出されます。

私のテストでは、メッセージはiPhoneシミュレーターとデバイス(3.1.3)およびiPadシミュレーターに表示されますが、iPadデバイス(3.2)には表示されません。

于 2010-04-20T02:59:43.563 に答える
0

MapKitも使用している場合、これはMapKitのエラーです。MapKitはCoreLocationに登録していますが、ユーザーが場所の更新を拒否した場合、または失敗した場合に報告されたエラーを適切に処理していません。(ジオコーディングエラーの場合と同様に)デリゲートメソッドを介してこのエラーを渡す必要がありますが、そうではありません。

残念ながら、MapKitはロケーションを取得するために使用するCLLocationManagerのインスタンスを維持し、それがデリゲートにエラーを報告しているため、コアロケーションからのメッセージをインターセプトする方法を考えることはできません。

于 2010-05-23T07:58:42.653 に答える