2013-08-07 27 views
5

私のiPhoneアプリは、2モード、オンラインモード、およびオフラインモードを持っています。ユーザーがオンラインモードでアプリを使用している場合、リクエストはすぐにサーバーに送信されます。ユーザーがオフラインモードでアプリを使用している場合は、リクエストがローカルに保存されるため、インターネットが利用可能になったらアップロードできます。私はインターネット利用可能性をチェックするために到達可能性クラスを使用しています。到達可能性はアプリでうまくいきます。 私は以下のシナリオを達成できません。私はユーザーがオフラインモードで働いているので、ユーザーがiPhoneのホームボタンをクリックしてアプリケーションをバックグラウンドで押している間、リクエストを保存していました。しばらくすると、ユーザーは自分の端末でWi-Fiまたは携帯電話の接続を有効にします。ユーザーがインターネット接続を有効にすると、バックグラウンドにある私のアプリに通知が送られ、サーバーにリクエストを提出する必要があります。どのように私はこの機能を達成することができますか?多くのiOSアプリはこの要件を同じにしている可能性があります。彼らはそれをやっている?何か案が?バックグラウンドで、インターネット接続、IOSを確認できるアプリ

私はこれを達成するために次のステップを試みましたが、成功しませんでした。私はここで間違っています、助けてください。

1)applicationDidEnterBackgroundデリゲートメソッド内にkReachabilityChangedNotificationのオブザーバを追加しました。私のアプリは、この方法では、Kreachabiliychagednotificationに耳を傾けることができません。

2)私がkreachabilityChangedNotificationのオブザーバをapplicationdidbecomeActiveの中に追加すると、私のアプリはKreachabiliychagednotificationを聞くことができます。

IOSがアプリがバックグラウンドになっているときにIOSがKreachabiliychagednotificationをリッスンできるのはなぜですか?

+0

こんにちは、この質問の回答がありますか? – souvickcse

+0

こんにちは、この問題を解決できましたか? – ShayanK

答えて

1

私がプロジェクトに参加したときと同じシナリオを扱うようになりましたが、そのことを知るようになった デフォルトでは、バックグラウンド状態のアプリケーションは短時間の間のみ、ほとんどのアプリケーションはまもなくサスペンド状態に移行します。つまり、アプリはバックグラウンドにありますが、コードを実行していません。したがって、カスタム実装された通知は機能しません。アプリデリゲートmethodesでウェイクアップ時のNetworkReachabilityを再クエリする必要があります。

applicationWillEnterForeground: 
applicationDidBecomeActive 

は、これは私がその問題を処理するためにやった最高でした、答えはあなたのアプリケーションが1つを持っているだろうことができない場合を除きということです、それは

+0

ありがとうございます..しかし、他のiOSアプリがこれをやっている可能性はありますか? – RockandRoll

+0

@Andreaはこれについて正しいと思います... –

4

を役に立てば幸いこれらの具体的な使用の(Appleのドキュメントを引用):バックグラウンド実行のいくつかのタイプの

サポートは、それらを使用することにより、アプリ 事前に宣言する必要があります。アプリはInfo.plistファイルを使用して サービスのサポートを宣言します。 あなたのInfo.plistファイルにUIBackgroundModesキーを追加し、次の文字列のいずれか 以上を含む配列に値を設定します。

*オーディオ 背景にしながら、アプリがユーザーに可聴コンテンツを再生します。 AirPlayを使用してストリーミングオーディオまたはビデオコンテンツを配信します。
* location - アプリはバックグラウンドで実行中であっても、ユーザに の位置情報を知らせます。
* voip - アプリには、 インターネット接続を使用して電話をかける機能があります。
* newsstand-content-このアプリは、 の雑誌や新聞のコンテンツをダウンロードして処理するニューススタンドアプリです。
* external-accessory - このアプリケーションは、 外部アクセサリーフレームワークを通じて定期的にアップデートを配信する必要があるハードウェアアクセサリ で動作します。
* bluetooth-central - このアプリケーションは、 Bluetoothアクセサリと共に動作し、コアBluetoothフレームワークを通じて通常の スケジュールでアップデートを配信する必要があります。
* bluetooth-peripheral - このアプリケーションは、Core Bluetoothフレームワークを通じて 周辺モードでBluetooth通信をサポートしています。

再び到達可能であることを確認できるのは、フォアグラウンドに再び入ることだけです。

+0

+1詳細な説明のために... –

関連する問題