1

GeoFencing を使用して地域を設定し、ユーザーが地域に出入りするときにいくつかのタスクを実行しています。それは私にとってはうまくいきません、私はgollowingコードを使用しています

CLLocationCoordinate2D coord = CLLocationCoordinate2DMake(some values,some values);
    CLRegion *region = [[CLRegion alloc]initCircularRegionWithCenter:coord radius:15.0 identifier:@"SF"];
    [locationManager startMonitoringForRegion:region desiredAccuracy:kCLLocationAccuracyBest];

しかし、アプリケーションを閉じてアプリが監視していて、その地域から離れたり、入ったりすると、デリゲートのdidEnterRegiondidExitRegionは呼び出されません。

4

4 に答える 4

3

半径 15m を定義します。それは小さすぎます。まずは50m以上でトライ。本当にその地域に入ったのか、地図アプリを見てください。
さらに、閉じるのではなく、「バックグラウンドに送信」を意味したことを願っています。
バックグラウンドでの実行を許可するようにアプリを設定したことを確認してください。(plist経由)

アップデート:

最後に、アプリケーションを終了したことが判明しました。その後、もちろん、ロクテーション イベントは発生しなくなります。
解決策:ホームボタンをダブルクリックしてから白い十字を選択して終了しないでください。ホームボタンを1回クリックして閉じると、バックグラウンドで実行される可能性があります。

Update2: アプリが終了しても、ios は位置監視サービスに登録されている場合は再起動します: CllLocationManager Class Referenceより

このサービスを開始し、その後アプリケーションが終了した場合、新しいイベントが到着すると、システムはアプリケーションをバックグラウンドで自動的に再起動します...

于 2013-03-22T11:45:57.833 に答える
1

ヘッダー ファイルに CLLocationManagerDelegate を追加します。追加したことを確認してください

locationManager.delegate = self;

半径を大きくして確認してください。

于 2013-03-22T11:48:38.737 に答える
1

まず、その特定の場所に指定している半径を増やし、それが機能しないかどうかを再度確認します。次に、このチュートリアルで提供されているいくつかの簡単な手順に従って、アプリにジオフェンシングを簡単に実装できます。

参考:アップルのドキュメント

于 2015-05-13T19:29:07.053 に答える
0

半径 15m を定義します。それは小さすぎます。まずは50m以上でトライ。本当にその地域に入ったのか、地図アプリを見てください。さらに、閉じるのではなく、「バックグラウンドに送信」を意味したことを願っています。バックグラウンドでの実行を許可するようにアプリを設定したことを確認してください。(plist経由)

于 2016-05-23T08:39:14.560 に答える