昨日に引き続き、ジオフェンスのテスト。

デバッグモードで色々変えて試すも、フェンスの出入りを感知しない。

CLLocationManagerは動作しているようである。

ジオフェンスの設定が不味いのか思いチェックをする。

デリゲート指定:delegate = self;    <——————————————デリゲート指定
測位の精度:setDesiredAccuracy:kCLLocationAccuracyBest  <——–最高精度
位置情報取得間隔:setDistanceFilter:kCLDistanceFilterNone <——–指定なし
GPSの開始:-(void)startUpdatingLocation <———————————GPSの開始

GPSの使用可否:locationServicesEnabledのメソッドが使われていない。

ネットを探るが、イマイチ原因がハッキリしない。
サンプルを紹介している記事にiOS7.0には対応していないと書かれている事もあり、そのサンプルは諦めて他を探す事に。

アマゾンで位置情報を使ったアプリ開発を紹介する本があったので購入する事にした。
早速、付属のサンプルを試します。

機能は先ほどのジオフェンスと変わりないのですが、こちらはiBeaconにも対応しています。

UUIDをUSB型ビーコンで設定。

アプリックスのmybeaconという製品です。

iPhoneアプリ「mybeacontool」をインストールしてUUID、Major、Minorの設定をします。

こちらのサンプルを元にプロジェクトを作成して動かしてみました。

昨日と同じようにシュミレーターで位置情報をカスタマイズ

シミュレータのメニューのデバッグ->位置->位置情報をカスタマイズで緯度、経度を入力

 

 

 

デバッグモード

 

 

 

 

 

 

 

 

 

 

 

しかし、昨日と同様に didEnterRegionに飛んでこない。

あるブログに既にリージョン内にいる場合に正常に起動しないと書かれていた。

なのでシュミレータで一度appleの住所を指定してみた。それから東京タワーを中心にジオフェンスを設定して。経度緯度に東京タワーの位置を入力してみた。

そうするとdidEnterRegionに飛んで来た。

このサンプルではジオフェンスが3レベルで張られているので、その位置に動かしてテストをしてみる。

多少の誤差はあるが、ほぼ大丈夫のようだ。

既にリージョン内にいる場合はどうか?

didDetermineStateを使ってステータスを聞いて

CLRegionStateInsideの場合はstartRangingBeaconsInRegion

CLRegionStateOutsideの場合はstopRangingBeaconsInRegion

を呼んでいるので問題はないようだ。

何度か経度緯度を変えてデバッグしていくと、このCLRegionStateOutsideの前にBeaconの可動範囲10m以内だったらと判断していたために起こったようだ。

実際のビーコンある地点と、シュミレーターのテスト地点が10m以上誤差があるとstartもstopも起こらなかったわけだ。

取りあえずサンプルので起動の確認は出来たので、アプリ作成にはいる。