問題タブ [clregion]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - 再利用されたプロジェクトの問題に関する iOS リージョンの監視
地域モニタリングを使用してさまざまな成功を収めたプロジェクトがありましたが、ほとんどの場合は機能しましたが、期待したほど正確ではありませんでしたが、すぐに完全に正確ではないことがわかりました。これは問題ありません。物理的にテストするだけです難しかったです。それにもかかわらず、彼らは完全なユーザー インターフェイス全体を 1 日で完成させたいと考えていました。だからここに私がやったことです。
古いプロジェクトを複製して名前を変更し、バンドル ID とすべて、および本質的に別のプロジェクトにするために必要だと思われる場所を変更しました。以前に xib ファイルを使用していたので、ストーリーボードを作成しました。次に、起動手順を変更して、既存の xib ファイルの代わりにストーリーボードを使用するようにしました。すべてがダンディに働いた。新しいインターフェースと本質的に同じコードを持っています。
問題...
リージョンがトリガーされることはありません...ロケーション サービスが機能していても、ロケーション サービスを使用して半径内にいるかどうかを教えてくれますが、フェンス コールバック API がオフになることはありません。次に、複数のデバイスでテストしました。そして最後にそれらの1つがトリガーされました...しかし、それは古いアプリであり、問題なくフェンスをトリガーします。一方、新しいものはそうではありません。これを引き起こす原因となる間違ったことを理解し始めることさえできません。私はAPIを使用しても失敗し、メソッドは成功しましたが、フェンスは問題を登録していないと表示されます。
別の厄介な問題は、場所をシミュレートするために GPX ファイルを使用すると、フェンスがコードでトリガーされることです...私が言わなければならないイライラするもの。
助言がありますか?必要に応じてコード例を提供します。
ios - CLCircularRegion - notifyOnEntry の任意の値
CLLocationManager によって監視されている CLCircularRegions のセットがあります。マップ ビュー コントローラーの viewDidLoad でmonitoredRegions
、ロケーション マネージャーを反復処理し、CLCircleRegions に対応する MKCircle オーバーレイを作成します。各地域 (および対応するマップ オーバーレイ) の中心座標と半径は常に正確であり、意図した値から変更されることはありません。notifyOnEntry
ただし、このビューをリロードするたびに、YES と NO の間で任意に変化するようです。領域がこのプロパティの意図した値を反映する場合があります。他の値が一定のままであっても、この値が変化する理由はありますか? リージョンがロケーション マネージャーに渡された後は、リージョンを操作しません。
ios - 非推奨の CLRegion メソッド - 半径を取得するには?
geocodeAddressString:completionHandler:
CLPlacemarks の配列を返すメソッドを使用しています。緯度、経度、ニーモニック名、半径を取得する必要があります。最初の 3 つを取得するのは簡単ですが、
placemark.region.radius
推奨されていないため、半径を取得する方法がわかりません。代わりに今何を使用するかについてのアイデアはありますか? ドキュメントで十分に興味深いものを見つけることができません。
ios - iOS7 の CLLocationManager が機能しなくなる
MyCLLocationManager
は、ユーザーが最初にアプリに入ったときに始まります。私は次のように初期化しています:
そして、私はジオフェンシングを使用しています。
.plist で .plist を定義しましたrequired background modes
。
gpx ファイルを使用してシミュレーターでアプリをテストすると、正常に動作します。ここまでは順調ですね。
ただし、次の 2 つのリンクを読みました。
バックグラウンド タスクから iOS 7 の Location Manager を起動する
バックグラウンド位置情報サービスが iOS 7 で機能しない
ではiOS7
、場所が数分間変わらない場合、 はCLLocation
スリープ状態になります。
私の質問は次のとおりです。
私はまったく呼び出しません。必要なのは、またはdidUpdateLocation
だけです。理論的には、アプリが強制終了された場合や、ユーザーの場所が過去 1 時間変更されておらず、移動することを決定した場合でも機能しますか?didEnterRegion
didExitRegion
ios - Location Manager stopMonitoringForRegion が機能しない
私が現在取り組んでいるアプリは、アプリがバックグラウンドになっているときに、ユーザーの現在の場所で地域監視を設定しています。アプリが再びアクティブになったときに、リージョンの監視を停止しようとしていますが、ほとんどの場合断続的に動作しているようで、期待どおりに動作しません。アプリがバックグラウンドになったら、リージョンの監視を開始し、詳細をログに記録すると正常に動作します。
次のログが生成されます。
- 「作成された地域: regionFor: [ここに実際の緯度、ここに実際の経度] 半径: 100」
アプリが起動したら、次の関数を呼び出します。
これにより、約 75% の確率で次のログが生成されます。
- 「1 リージョンの監視を停止しようとしています」
- 「停止後、現在1つの地域を監視しています」
まれに、成功したように見えるものを取得します。
- 「1 リージョンの監視を停止しようとしています」
- 「停止後、現在監視しているリージョンは 0 です」
私はいくつかのことを試しましたが、成功しませんでした。私が作成している領域は CLCircularRegions であり、CLRegion から継承されるため、関係なく動作するはずですが、for ループで CLRegion を CLCircularRegion に変更しましたが、効果はありません。私はもともと、NSSet を返す [locationManager monitoringRegions] を単独で使用していたので、allObjects 関数を使用して配列を取得すると問題が解決すると考えていましたが、解決していません。
また、列挙中に配列を変更することに問題があるのではないかと思いましたが、SOで見た他の唯一の投稿は、上記がそれらのために働いたと言いました...
何か不足していますか?
ios - iOS 地域の監視: アプリがクラッシュしていますか、それとも予期されていることですか?
私のアプリは、バックグラウンドのときにリージョン モニタリングを使用します。アプリがバックグラウンドに入るとすぐに、その位置 (既にフォアグラウンドにある) を取得し、その周囲に領域を作成して、その領域の監視を開始します。
ログにココアの木こりを使用しており、applicationDidFinishLaunchingWithOptions 内でログを設定すると、「ログを開始しています...」とログが記録されます。通常、アプリが最初に開いたとき、または何らかの理由でアプリがクラッシュし、アプリを再起動してログを見て理由を判断する必要がある場合にのみ、これが表示されると予想しています. 今日テストを行っていると、次のように、リージョンを作成してから数分後に、5 時間の間にファイルに「Starting logging」のインスタンスが 15 個あることに気付きました (場所固有の情報を削除しました)。
- 午後 7 時 17 分: 作成されたリージョン: regionFor: [xxx, -xxx] with radius: 200
- 19:25: ロギング開始....
(ここでは、移動してサーバーにリクエストを送信するかどうかを確認するために、いくつかの簡単な場所の更新を行います。これには約 1 秒かかり、監視する別のリージョンを作成します...)
- 午後 7 時 25 分: 作成されたリージョン: regionFor: [xxx, -xxx] with radius: 200
- 19:44: ロギング開始....
(ここでは、移動してサーバーにリクエストを送信するかどうかを確認するために、いくつかの簡単な場所の更新を行います。これには約 1 秒かかり、監視する別のリージョンを作成します...)
- 7:44pm: CREATED REGION: regionFor: [42.77846, -71.42591] with radius: 100
- 8:04pm: ロギングを開始します....
場所の更新に関連して削除したものと、関連性がないと思われるサーバー要求の間にログがあります... アプリがユーザーによって強制終了された後、電話自体が再起動された後、またはアプリがクラッシュした後、初めて開始されます。これは予期された動作ですか、それともアプリがクラッシュした後、何らかの形で OS によって再起動されているのでしょうか?
注意すべきことの1つは、ロケーションの更新を処理してリクエストを送信するバックグラウンドタスクを開始する方向に進む可能性が高いことです。ロケーションの更新に少し時間がかかり、リクエストにも時間がかかる場合があると確信しているためです。 didExitRegion の更新を処理するには、私が読んだ 10 秒以上が必要ですが、それは私が見たこの一見奇妙な動作とは無関係のようです。どんな助けでも大歓迎です。