2012-02-24 11 views
2

iOSでジオロケーション通知を実装したいが、特定の日付と時刻に実装したい。iOSでのジオロケーション通知

通知は、ユーザーが特定の場所に、特定の日時にある場合にのみ起動されます。

例:ユーザーはリオデジャネイロにあり、12時です。

誰も通知を開始するためにこれらの2つの条件をマージする方法を知っていますか?

+0

あなたのアプリケーションが起動しているとき、または終了しているときにこれを起動しますか? – Lefteris

答えて

0

私が知っているものは何もありません。あなた自身でロジックをコーディングする必要があります。したがって、CoreLocationからジオ更新を取得するだけで、時間の更新を提供するタイマーを作成し、定期的にexecするロジックを記述し、ビジネスルールに合致する場合は通知を発行することができます。これを達成するには、アプリケーションが実行されている必要があります。あなたは外部のサーバーからプッシュ通知を送ることができますが、そのサーバーは電話がどこにあるかを知っていなければならず、あなたのアプリはそれを伝える必要があります。

これは役に立ちますか?

+0

私はそれがより簡単にできると思う、私はこれについてさらに検索します。とにかくありがとう。 –

0

これは、場所の更新が先行している限り、エレガントに行うことができるようです。

使用このCoreLocation startMonitoringSignificantLocationChanges

場所に関する最新情報を入手するために、そして(ドキュメントで説明したように)、これらの更新はバックグラウンドでアプリを起動することができるようになります。次に、AppDelegateの "application:didFinishLaunchingWithOptions"メソッドで、通知を送信するタイミングが適切かどうかを確認するためのロジックを追加します(CoreDataなどの情報を確認して確認します)。

定期的にチェックするタイマーを作成する必要はありません。正しい位置のバックグラウンドでアプリを起動するので、CoreLocationにイベントのエントリポイントを処理させてください。

0

これは簡単です。私はあなたがCLLocationManagerMKReverseGeocoderクラスを使い慣れていると仮定します。重要な場所の変更だけを監視する目的では、(場合によっては移動するキロメートルの場合でも)うまくいくでしょう。これは、デバイスのバッテリ電力を節約するのに役立ちます。

したがって、CLLocationManager's代理人にはlocationManager:didUpdateToLocation:fromLocationというメソッドがあります。ここで逆ジオコーディングを使用して、MKReverseGeocoderクラスを使用して実際の場所に応じて実際の都市の名前を判断するだけです。また、デバイスの現地時間を確認し、2つを一致させ、それに応じて行動する必要があります(たとえば、バックグラウンドからアプリを起動するためのローカル通知を設定する)。

+0

時間が有効な時間に変更されたときに、ユーザーが既に正しい場所にいたときに、これが機能するとは思われません。 –

+0

実際にロリー私はあなたが正しいと言う必要があります!いい考え。 :) 私は上記のことを拡張しなければなりません。重要なロケーションの変更が発生するたびに、新しいロケーションの都市を** NSUserDefaults **に保存する必要があります。また、12時に地域の通知を設定する必要があります。地元の通知が鳴り出すと、保存された場所を確認し、リオデジャネイロに合っている場合はそれを表示し、そうでない場合はキャンセルします(そして翌日に新しいものを設定します)。 あなたのコメントありがとう、Rory! –