私はジオフェンシングを行うアプリを持っています。私がSimulator(Xcode 8.3.3とXcode 9)でそれを実行すると、私のCLLocationManager didEnterRegionが呼び出されないという例外を除いてすべてが機能するようです。locationManager didEnterRegionがXCode 9シミュレータで呼び出されていません
実際の世界で(地域を入力して)、または場所シミュレーションを介してXcodeでアプリを実行したとき、それはちょうどいいと呼ばれています。
これはなぜでしょうか?
私が発見した1つの違いは、使用時にシミュレータがモニタリング位置をサポートするだけなので、plistファイルに両方の許可文字列を持つように設定する必要があったが、それ以外は困惑している。
私は(それはあまりにも複雑で、私のアプリで配布です)、私はシミュレータで働いているものに注意しましょうコードを提供していないよので:私のアプリのスキームでは
、私がしている「場所を許可しますSimulation 'がチェックされており、監視している場所にいくつかの.gpxファイルが追加されています。私はデフォルトの場所を設定しています。
私の起動時に私のロケーションマネージャデリゲートが呼び出されています。私はシミュレータで認証され、常に電話で承認されます。
locationManager(:didUpdateLocations :)は、場所が変更されたときに呼び出されます。
didUpdateLocationsが呼び出されると、私は次のようにします。
for r in manager.monitoredRegions { if let cr = r as? CLCircularRegion { if cr.contains(location.coordinate) { log.debug("Am in the region!") } else { let crLoc = CLLocation(latitude: cr.center.latitude, longitude: cr.center.longitude) log.debug("distance is: \(location.distance(from: crLoc))") } }
、それが動作します。だから、私の地域は監視されていると私の場所は、私はそれがすべきだと思うところです。
最後に、私のlocationManagerデリゲートのmonitoringDidFailForとdidFailWithErrorが呼び出されていません。彼らは今までになかったことではなく、開発中に持っていますが、今はありません。
だから私は困惑しています。再び、それは電話ではうまく動作し、シミュレータではうまく動作しません。
私は間違っていますか?
こんにちはKuhncjを、ヒントをありがとうございました。その上で、私はバックレイWenderlichチュートリアルに行き、私はXcodeの8が表示のですかことがわかっはなく、Xcodeの9とXcodeの9はあなたのために働いていますか?私はついにそれを働かせましたが、変化があります。私は解決策をフォローアップします。 – markand
は、私は – kuhncj
[OK]をXcodeの8.3.3で動作するようには思えないのXcode 9に取り組んで簡単にそれを取得することができ波平、私たちは、同じ結果を取得しています。あなたはそれがXcodeの9上で動作するようになって試してみたい場合は、ソースコードモードでplistファイルを開いてみてください - とに次のキーを追加します - 影響は3つのキーの一つ、これを思い出すことができないというのplistエディタにはバグがあります' NSLocationAlwaysAndWhenInUseUsageDescription \t Geotifyは、ジオフェンスに入ったり出たりするときに通知するために携帯電話の場所にアクセスする必要があります。 ' –
markand