質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Objective-C

Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

3回答

470閲覧

PokemonGOに見られる、領域内にはいった時に通知される仕組み

YosukeNakayama

総合スコア80

Objective-C

Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2018/03/05 01:47

編集2018/03/07 08:28

PokemonGOに見られる、領域内にはいった時に通知される仕組みは、
iOSでいうとどの仕組みを使用していますか?

ジオフェンス機能かなと、
https://qiita.com/HIkaruSato/items/5b1e7564c3b2d529f4c5
https://intheweb.io/geofence-ios/

思ったのですが、20個しかイベントを置けないのですが、

例えば、全国にあるマクドナルドの500m圏内に入ったときに通知する。
といったような実装は、どのクラスを使用すれば良いでしょうか。

この上のバーもいらない状態で、位置情報を取り続けれますでしょうか?
イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

ポケモンGOはやったことないので的外れならすみません。
ジオフェンスに関しては進入したり退出するたびに現在位置から最も近い上位20個のの領域を登録し直すのはいかがでしょうか。
バッテリーを使わずにさらに抜け漏れを減らしたいのであれば、大域移動の通知を登録し、誤差が低めな大域移動移動が発生するたびに上記の近い領域上位20個を登録し直せば良いでしょう。

投稿2018/03/06 13:58

516k

総合スコア189

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YosukeNakayama

2018/03/07 08:27

5000個はあるので。。すいません、ありがとうございます。
516k

2018/03/07 10:29

総数の問題でしょうか?監視している領域の密度の問題かと思いますが。同時監視20で取りきれない程の密度であればジオフェンスではなくてビーコンになってしまうかもしれませんね。
YosukeNakayama

2018/03/08 07:14

ビーコンですか、、やはりiOSの制限でできませんか。ありがとうございます。
YosukeNakayama

2018/03/27 08:38

ありがとうございます、バックグラウンドで位置情報を取得しながら、ジオフェンスで登録し直すという作業を行うということですか? ジオフェンスで再登録するには、アプリを開いて貰わないといけないと思うのですが、どうでしょうか?
516k

2018/03/27 14:45

locationManager(_:didEnterRegion:) locationManager(_:didExitRegion:) アプリのステータスがどのような状態でも上記デリゲートメソッドはアプリを起動して実行されますよ。 どの程度のコード実行時間の猶予が与えられるかは、OSの状態やアプリがどのステータスからコード実行状態に遷移したかに依存すると思います。(Appleは具体的な数値は発表していないと思います。) ご質問の回答は上記の猶予時間内に完結するような処理内容かどうかに依存しますね。
YosukeNakayama

2018/03/28 01:27

なるほど!!めちゃめちゃ参考になりました!ありがとうございます!!!!
guest

0

Pokémon GOのことは知らないですが、「マクドナルドの500m圏内」に限って言えば、全国のマクドナルドの位置情報をアプリ内に持って、端末の位置情報と照合すれば良いのでは?

投稿2018/03/05 05:39

編集2018/03/05 05:39
fuzzball

総合スコア16731

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YosukeNakayama

2018/03/05 11:45

具体的にはどんな実装になりますか?クラス名を教えていただけませんか。
guest

0

たんに現在位置をサーバに送って、なにがどこにどうなるのをサーバからもらってるだけでは

投稿2018/03/05 02:53

y_waiwai

総合スコア87774

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YosukeNakayama

2018/03/05 04:25

現在位置をバックグラウンドで常にサーバーに送ることは可能なんですか?
y_waiwai

2018/03/05 04:54

まあ、常に送るといってもせいぜい数秒ごとの送信となるとは思いますが、それぐらい普通に行われてることですねー
YosukeNakayama

2018/03/05 11:45

クラス名などありますでしょうか。
y_waiwai

2018/03/05 11:47

そういうのは自分で作るもんなんで、自分で決めましょう
YosukeNakayama

2018/03/05 12:22

わかりました、ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問