iOSアプリが地図を終了することはありません

私のアプリはちょうどアプリストアにアップロードされています。私のアプリでは、現在の場所から特定の場所への方向を示すボタンがあります。シミュレータではすべて正常に動作しますが、ボタンをテープでテープに貼り付けたときにiPhoneに表示されるため、iPhoneのボタンを押してマップを終了しますが、アプリをタップして再び開くと地図が再び読み込まれます1時間後でも!

基本的には、方向ボタンを押した後に毎回アプリが読み込まれるときに地図をロードし続けます。

あなたはアプリを開き、アプリは地図を開くだけです!

私は何が起こっているのか分かりません!

ここで私が使用したコードは、

- (IBAction)directionButton {
[super viewDidLoad];

CLLocationManager *locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
locationManager.distanceFilter = kCLDistanceFilterNone;
locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters;
[locationManager startUpdatingLocation];
}


- (void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
       fromLocation:(CLLocation *)oldLocation
{
double currentLat = newLocation.coordinate.latitude;
double currentLong = newLocation.coordinate.longitude;

NSString* url = [NSString stringWithFormat: @"http://maps.google.com/maps?saddr=%f,%f&daddr=%@",
                 currentLat, 
                 currentLong,
                 [address stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];

[[UIApplication sharedApplication] openURL: [NSURL URLWithString: url]];
}
0
アプリをアプリストアにリリースする前に、実際のハードウェアを常にテストしてください。シミュレータは完璧ではありません。
追加された 著者 Dancreek,

4 答え

  1. - (IBAction)directionButtonメソッドで[super viewDidload]を呼び出さないでください。
  2. あなたのviewDidLoadやviewWillAppearのどこかに - (IBAction)directionButtonメソッドを呼び出すか、そのメソッドのように呼び出すと思います。したがって、アプリケーションを開くたびにこのメソッドが呼び出され、CLLocationManagerがデリゲートメソッドを呼び出すとしばらくすると、アプリはマップアプリにリダイレクトされます。
1
追加された

あなたの質問はあまり明確ではありませんが、私が理解しているところでは、マップを含むビューを破棄して前のビューに戻るという単純な問題です。どのようにして、ビューをボタン付きのビューからマップ付きのビューに変更していますか?

0
追加された
それは、完全に別個のアプリケーションであるデバイス上の地図アプリケーションを開くはずです
追加された 著者 eric.mitchell,
「最初のページ」?あなたのアプリでは、実際にGoogleマップのオープニングを引き起こすものは何ですか?
追加された 著者 eric.mitchell,
コードが示すように、私はマップへのURLリンクを呼び出します
追加された 著者 Mona,
まさに!なぜそれがそれを行うのか分からない!
追加された 著者 Mona,
それが開かれるたびにアプリが最初のページを読み込ませるようにするにはどうしてですか?
追加された 著者 Mona,
私はそれを得たと思う。アプリケーションがバックグラウンドで実行されないようにします。これは問題を解決するはずです。ありがとう
追加された 著者 Mona,

私はちょうどバックグラウンドで実行されているアプリを防ぐことによって、これを修正しました。

そのため、info.plistに新しい行を追加して、「アプリケーションはバックグラウンドで実行されません」にする必要があります。その前にボックスをチェックします。

0
追加された
それは私の推測でしたが、それが良いかどうかは分かりません。バックグラウンドで実行しないと、自分のメールをチェックできなくなり、指示に戻ります。
追加された 著者 David Dunham,
私が行く最後の解決策
追加された 著者 Mona,

解決策は非常に簡単でした。ロケーションコールの更新が完了したら、以下のメソッドを呼び出します。

[manager stopUpdatingLocation];

managerはCLLocationManagerのインスタンスです。

0
追加された