あなたが領域のアレイを相談している場合は、その後locationManager(_:didDetermineState:for:)
(locationManager(_:didEnterRegion:)
とlocationManager(_:didExitRegion:)
)でキャッチしますどの返信これは、非同期の相談になります気づく、あなたが相談したい領域の上にrequestState(for:)
を呼び出す必要があるので、まずにいることを取りますアカウント。
要約
var locationManager = CLLocationManager()
// Do all proper setting for locationManager
...
// Here you make the asynchronous request for the state of a region
locationManager.requestState(for: CLRegion()) // Your region
func locationManager(_ manager: CLLocationManager, didDetermineState state: CLRegionState, forRegion region: CLRegion) {
switch state {
case .inside:
// It's inside the region
case .outside:
// It's outside
default:
// It's unknown
}
}
、requestState(for:)
は、他のすべての代表者が同様に呼び出されるように、デバイスを移動せずに大幅な変更を強制するのと同等ですが、興味のあるあなたのポイントはlocationManager(_:didDetermineState:for:)
ソースです:https://developer.apple.com/documentation/corelocation/cllocationmanager/1423804-requeststate
返信いただきありがとうございますが、このコールバック関数は、iOSデバイスが重要なロケーションの変更を検出した場合にのみ呼び出されます。 – androisojavaswift
@androisojavaswift今私の新しいアプローチを試してみてください。 –
詳細情報をありがとうございます。はい、あなたが正しい。あなたが提案するアプローチはうまく働き、私もあなたと同じアプローチを使用します。しかし、iOSが自動的にバックグラウンドでアプリを起動してrequestState(for :)を起動しないため、デバイスを再起動してもこのアプローチはもう機能しません。 だから私は、デバイスの再起動後、ユーザーがアプリを再起動することなく、バックグラウンドでrequestState(for :)を起動する方法を理解する必要があります。 – androisojavaswift