2012-02-16 6 views
2

私のアプリケーションにいくつかのデータを更新したい。アプリケーションがバックグラウンド状態にあり、VoipまたはMusicまたはGPSではないと考えてください。バックグラウンドにあるアプリケーションにデータを更新/送信することは可能ですか?アプリがバックグラウンドのときに更新する

注:アプリケーションがアクティブになるようにユーザーに通知する必要はありません。

誰でも私を助けることができますか?

+0

参照してください[リンク] [1] [1]:http://stackoverflow.com/questions/4594348/iphone-connecting-to-server-in-background/ – Apurv

+0

私は読んだことがあるリンゴ有限で長時間実行されるタスクの実行に関するドキュメント。しかし、ここで私はサーバーからアプリケーションに、 – Cyril

答えて

4

答えははい、いいえです。

アップルでは、​​アプリがバックグラウンドで長いプロセスを完了できるようにしています。しかし、あなたがVoip、音楽、またはGPSカテゴリに該当しない場合は、バックグラウンドで実行することはできません。

たとえば、サーバーにデータを送信するときに時間がかかる場合は、処理が完了するまで(または10分経過するまで)そのプロセスをバック実行するようにマークすることができます。

あなたは、いくつかの約Executing a Finite-Length Task in the Background

タイマーを実行するための方法やその背景にあるような任意のものがありませんでしょう、あなただけのアプリがバックグラウンドにされる前に開始したタスクを完了することができます。

+0

@ rckoenesの状態にかかわらず、データを送信したいと思います。あなたの返事をありがとうございます。私はマルチタスキングとバックグラウンド実行のリンゴ文書を見てきました。私は他の方法でそれをしたい。私は、通知(サーバーからのデータをバックグラウンドで実行しているアプリに送りたい)。私は知っている、プッシュ通知を送信することで、私はそのアプリをアクティブにすることができます。私はどこにいてもアプリをフォアグラウンドにしたくありません。アプリはバックグラウンドにとどまり、データを更新する必要があります。それは可能ですか? – Cyril

+0

これは不可能です。また、プッシュ通知を送信すると、フォアグラウンドにアプリケーションが表示されず、ユーザーがプッシュ通知を開いた後でのみ、フォアグラウンドに来ることになります。 – rckoenes

+0

申し訳ありませんが、あなたは私を誤解しました。プッシュ通知のみを送信すると、ユーザーが通知に応答しない限り、アプリがフォアグラウンドになることはありません。私は、アプリケーションがバックグラウンドにあるときにサーバーからデータを更新しようとしていました。 – Cyril

0

表示されるアラートは、組み込み機能です。あなたはそれのために何もすることはできません。通知がサーバーから起動され、アプリケーションがバックグラウンドの場合、アラートが表示されます。 私はこのようなことについて過去に多くの検索をしました。

+0

はい。私は、ユーザーが何らかの費用、最低限の音でアラートされることを知っています。しかし、私は、フォアグラウンドにアプリを持って来て、私のデータを更新したくない。ユーザーに警告した後、私はアプリケーションにデータを更新したい(アプリケーションをフォアグラウンドにすることなく) – Cyril

+0

まず、 "表示"ボタンのイベントをキャプチャすることはできません。前景。もう1つのことは、そうすることによってHIGのガイドラインに違反することになります。 – iamsult

+0

私はアプリを単独でフォアグラウンドに移動させたり、プッシュ通知を送信したりしたくありません。アプリをバックグラウンド状態にして、バックグラウンドで更新したい。 – Cyril

0

私はこれを自分の仕事の1つで行っています。これは私がやったことです。

アプリケーションは次のように入力します- (void)applicationDidEnterBackground:(UIApplication *)application

私はプロパティでASIHTTPRequestを使用してサーバーにデータを送信する: [request setShouldContinueWhenAppEntersBackground:YES];

しかし、完成した後、私はもう、接続やデータ操作をしませんでした。したがって、あなたのアプリではなく、バックグラウンドで接続が実行されています。接続が完了した後ではあまりできません。

@rckoenesが言及されているので、あなたはあまりにも長い時間タスクを実行することはできません。

-1

アプリがバックグラウンドモードで実行されている間にサーバーデータを更新する場合は、その時点でアプリケーションがアクティブである必要があります。 「音楽やボイスや位置情報のトラッキング」を使用する場合にのみアクティブにすることができます。そうしないと、アプリはバックグラウンドモードで一時停止されます。

これを回避する1つの方法は、アプリケーションを開発し、たとえば「場所の追跡」を使用するように設定することです。これにより、アクティブなバックグラウンドプロセスの要件を満たすことができ、サーバーデータを更新することができます。

残念ながら、アプリがこの設定でアプリストア承認を渡すことができるかどうかはわかりません。 ただし、このソリューションに興味がある場合は、hereという例があります。

関連する問題