2016-10-07 6 views
1

私は少しガイダンスを期待していました。私は、Bluetooth周辺機器を動作させるアプリケーションを持っています。ユーザーがアプリを殺すと、そのアプリをスワイプして、サービスがに殺されます。私はたぶんジオフェンシングを使用することを考えました。そこでは、彼らがエリアに入ったり出たりすると、再びサービスを開始しようとします。 私の質問:これは可能ですか?または、iOSはジオフェンシングのためにできることとできないことを制限していますか?私はあなたがエリアを出るか、またはエリアに入るときに通知を表示するだけの例を見ました。iOS Bluetoothサービスの提案

ジオフェンシングが方法でない場合は、私のブルートゥースサービスを継続的に実行する方法に関する他の提案はありますか?

答えて

1

ジオフェンシングでできることは、1つ以上のリージョン(最大20個)を監視するようにOSに依頼することです。その後、デバイスがこの領域に入ると、OSはバックグラウンドでアプリを起動させ、あなたが何らかのタスクを実行できるようにします(通知はあなたができることの一例にすぎません)。まだ起動していない場合は、アプリを起動します。

デフォルトでは、アプリはバックグラウンドで連続して実行できないため、数分後(またはバッテリ寿命に応じてOSに依存します)、アプリはスリープ状態に戻ります。このため、アプリは通常、非常に短いタスクを実行します。

しかし、あなたのアプリがバックグラウンドで連続して実行されることが許可されている場合、そのアプリはその地域を離れてもバックグラウンドで実行され続けます。これは、デフォルトでアプリケーションが実行できるものではなく、Xcodeの機能で明示的に要求しなければならない機能です。

だから、ユーザーが自動的にアプリを再起動するためにジオフェンシングを使用できるようですね。さて、それは不可能になるもう一つのルールがあります:あなたがそれまでにユーザーによって殺された場合、システムはあなたのアプリをバックグラウンドで起きさせません。これはシステムがユーザーに与える保証です。アプリを殺すと殺され、何らかの理由でそれが再び始まらなくなります。

短いストーリー:ユーザーがあなたのアプリを抹殺した場合、再び開始する唯一の方法は、ホームスクリーン上のアイコンをタップして自分自身を起動することです。デベロッパーにとっては悪いことかもしれませんが、実際にはユーザーにとっては良いことです。

+0

ありがとうございます!あなたは「まだ起動していなければ、あなたのアプリも起動します」と書いています。最後の2つの段落はそれが不可能だと言います。それらが矛盾しているように感じる.. – KotaBear233

+0

本当に。多くのアプリをバックグラウンドで眠っているためにメモリが不足すると、システムはその一部を殺す権利を留保します。その場合、これはユーザーが開始したkillではないため、必要に応じてシームレスに再起動します。 – deadbeef

+0

ホームボタンを2回タップして「古い」アプリ(しばらく使っていないアプリ)に行ってみましょう。最後の状態のスクリーンショットが表示されているので表示されますが、それが元の場所に戻ってこないことに気づくでしょう。システムがあなたに尋ねることなくそれを殺し、必要に応じて正常に再起動したからです。 – deadbeef

0

アプリの機能のバックグラウンドで位置情報サービスを有効にした場合、ユーザーが強制的にアプリを強制終了した場合でも、重要な変更監視を使用してアプリを再起動できます。しかし、それはすぐにはできません。それは、ユーザーが自分の位置を大きく変える必要があります。また、アプリが位置情報サービスを使用できるようにする必要があります。