OK、これは難しい問題です (とにかく私にとっては)... 私のアプリには、ユーザーがお店の近くにいるかどうかを確認するボタンがあります。ボタンは、押されたときに次のことを行うことで、ほぼ完全に機能します。
- ユーザーの緯度と経度の座標を取得します
- ユーザーの緯度と経度の座標を PHP スクリプトに渡します
- PHP スクリプトは、ユーザーとビジネスの間の距離を比較します。ユーザーが 100 フィート以内にいる場合、スクリプトは 1 を返し、ユーザーが 100 フィート以内にいない場合、スクリプトは 0 を返します。
- 最後に、アプリは、ユーザーが 100 フィート未満または 100 フィート以上離れていることを示すアラートを表示します。
前述したように、これはほぼ完全に機能します。建物に近づくと、ボタンをクリックし続けてビジネスに向かって歩くことができます。十分に近づくと、アラートが 100 フィート未満の距離にあることを知らせてくれます。
私の問題は、歩いているときにアプリをバックグラウンドに送信すると、アラートに間違った情報が表示されることです。たとえば、非常に離れた場所からアプリを開き、アプリをバックグラウンドに送信してお店に近づき、お店のすぐ隣にいるときにアプリをフォアグラウンドに持ってきてボタンをクリックすると、「I」と表示されます。 100フィート以上離れています。なぜこれが起こっているのかについて誰にもアイデアがありますか?
私のviewDidLoadメソッドでは:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(appReturnsActive) name:UIApplicationDidBecomeActiveNotification
object:nil];
appReturnsActive メソッド内:
- (void)appReturnsActive{
locationManagerProfile.delegate = self;
locationManagerProfile.desiredAccuracy = kCLLocationAccuracyBest;
[locationManagerProfile startUpdatingLocation];
[locationManager startUpdatingLocation];
}