問題タブ [ios-background-mode]
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 アプリがバックグラウンドにあるかどうかを確認する方法はありますか?
アプリがバックグラウンドで実行されているかどうかを確認したい。
の:
ios - バックグラウンド位置情報サービスが iOS 7 で機能しない
最近、iOS デバイスを iOS 7 を使用するようにアップグレードしました。私たちが開発しているアプリの 1 つは、デバイスの位置を追跡するためにバックグラウンドの位置情報サービスを使用しています。すべてのテスターは、アプリが iOS のバックグラウンドで追跡されなくなったと報告しています。 7。
デバイスの設定でアプリのバックグラウンド処理が有効になっていることを確認しており、以前のビルドは iOS 6 で問題なく動作していました。
iOS 7 でこれを機能させるには、他に何かする必要がありますか?
ios - 定期的な iOS バックグラウンド位置情報の更新
高精度で低頻度のバックグラウンド位置更新を必要とするアプリケーションを作成しています。解決策は、ロケーション マネージャーの更新を開始し、すぐにシャットダウンするバックグラウンド NSTimer タスクのようです。この質問は以前に尋ねられました:
iOS アプリケーションで n 分ごとにバックグラウンドで位置情報を更新するにはどうすればよいですか?
アプリがバックグラウンドになった後、n 分ごとにユーザーの位置情報を取得する
iOS 典型的なバックグラウンド位置追跡タイマーの問題ではない
「場所」バックグラウンド モードを使用した iOS 長時間バックグラウンド タイマー
位置追跡に基づく iOS フルタイム バックグラウンド サービス
しかし、最低限の例をまだ動かしていません。上記の受け入れられた回答のすべての順列を試した後、出発点をまとめました。背景を入力:
およびデリゲート メソッド:
現在の動作では、backgroundTimeRemaining
180 秒から 0 まで減少し (場所のログ記録中)、有効期限ハンドラーが実行され、それ以上の場所の更新は生成されません。バックグラウンドで定期的な位置情報の更新を無期限に受信するには、上記のコードをどのように変更すればよいですか?
更新: iOS 7 をターゲットにしていますが、バックグラウンド タスクの動作が異なるという証拠がいくつかあるようです。
ios - CoreLocation は、一定時間後にバックグラウンドで動作を停止します
ユーザーの GPS 位置情報を使用し、小さな計算を行い、データを Bluetooth Low Energy (4.0) ウォッチに送信するフィットネス (ランニング) 用の iOS (7.0+) アプリケーションを開発しています。このプロセスは、ユーザーが iOS デバイスをロックしている場合でも、バックグラウンドで実行する必要があります。
次のバックグラウンド モードも実装しました。
デバイスがロックされている一定の時間 (例: 2 時間) を除いて、すべてが正常に機能するようになりました。ただし、iOS デバイスは位置情報の更新を停止します。 GPS 値を Bluetooth ウォッチに送信します。次に、デバイスのロックを解除し、アプリを再度開くと、位置情報サービスが正常に機能するようになります。
一定時間後に位置情報の更新を突然停止することなく、位置情報サービスをバックグラウンド (デバイスをロック) で常に実行し続ける方法を知っている人はいますか? 可能であれば、GPS を使用する場合よりもバッテリーを消耗しすぎない効率的なソリューションが優先されます。
ios - アプリが一時停止状態のときに didUpdateValueForCharacteristic が呼び出されない
特定のシナリオでは、bluetooth 周辺機器に無期限に接続する必要があるアプリを開発しています。
質問を続ける前に、次のことを確認したいと思います。
- で初期化
CBCoreBluetoothManager
していdidFinishLaunchingWithOptions:
ます。 bluetooth-central
バックグラウンド機能を有効にしています。- Manager をキーで初期化し、以下を実装することで、State Preservation and Restoration を使用しています
willRestoreState
。 - 問題が発生する前に、周辺機器との接続に成功し、そのサービス (1 つだけを探しています) とその特性 (1 つだけを探しています) を取得し
setNotifyValue:
ますYES
。さらに、フォアグラウンドとバックグラウンドの両方で、didUpdateValueForCharacteristic:
特性の値が更新されるたびにコールバックを受け取ります。 - 「一時停止状態」をシミュレートしています
kill(getpid(), SIGKILL)
(アプリをバックグラウンドに置き、1時間以上放置してテストしました) - 中断と言うのは、実際の
Suspended
状態を意味します。すべてのアプリは、一定時間バックグラウンドに置かれた後、最終的にそこに到達すると私は信じています.
私が抱えている問題はdidUpdateValueForCharacteristic:
、アプリが中断されたときにコールバックを取得することです。アプリがバックグラウンドにある場合はコールバックを受け取りますが、中断されている場合は受け取りません。つまり、特性の値の更新によってアプリが起動されることはありません。
面白いことに、アプリをサスペンド モードにしているときに、ペリフェラルの範囲から出て切断し、範囲内に戻って再接続すると、復元しようとするため、アプリが起動されます ( willRestoreState:) を呼び出し、しばらくの間、特性値の更新をリッスンします。
要約すると、私のアプリが一時停止状態にあり、ペリフェラルの範囲内にある間、didUpdateValueForCharacteristic は呼び出されません。つまり、アプリは起動されません。100% 確実なのは、特性値の更新です。ただし、状態の保存と復元をサポートしているため、周辺機器の範囲から出て戻ってくると、アプリが起動します。
Appleのドキュメントから:
The system wakes up your app when any of the CBCentralManagerDelegate or CBPeripheralDelegate delegate methods are invoked, allowing your app to handle important central role events, such as when a connection is established or torn down, when a peripheral sends updated characteristic values, and when a central manager’s state changes.
私はそれらの更新を取得する必要があるようですが、このような問題が発生したことはありますか?
どんな助けでも大歓迎です!
前もって感謝します
ios - デバイスにビルドできるように、xcode でバックグラウンド モードを無効にする方法は?
バックグラウンド モードを有効にして試してみたところ、アプリがデバイスにビルドされなくなりました。率直に言って、ビルドが台無しになり、アプリの実行が妨げられるため、バックグラウンド モードを無効にしようとしています。シミュレーターと実際のデバイスでビルドしようとしましたが、どちらも機能していません。バックグラウンド機能を削除し、info.plist からキーも削除しました。アプリをもう一度実行できるように、スクリーンショットに表示されているエラーを取り除く方法を知っている人はいますか?