0

この質問は少し一般的で、よく聞かれるかもしれませんが、正確な情報を見つけることができません...だから:

アプリがバックグラウンドにあるときにある種のスレッドを実行して、Web サービスとの基本的な同期を実行できるようにすることは可能ですか?

アプリがバックグラウンドにある : ユーザーがホームボタンをクリックしたか、別のアプリに切り替えたことを意味します 基本的な同期 : 写真のアップロードと AFNetworking によるダウンロード。アプリがバックグラウンドにある間に HTTPRequest を続行する方法があることは知っていますが、これは私のポイントではありません。

私の目標は、ある種の同期マネージャーを作成し、ユーザーがアプリを使用している間に作成された更新する写真のリストを読み取り、それらの変更を実行することです。

マネージャーが OS によって強制終了される可能性があることはわかっていますが、サーバーはアトミック転送を使用しているため、問題はありません。再起動する方法が必要なだけです...プッシュ?

Google Latitude や Mail などのアプリや、これらの種類のアプリは探しているものを使用していると思いますが、関連する詳細が見つかりません。また、iOS5 を使用することは問題ありませんが、iOS6 を待つことは解決策にはなりません。

返信ありがとうございます。

PS : うーん、ほとんど忘れていました。アプリはエンタープライズ プログラム用に設計されているため、ルールが異なる可能性があります。社内展開のチェックは無いと思うので、新たな可能性に繋がるかも…

4

3 に答える 3

0

Tech Note 2277 Networking and Multitaskingをお読みください。

基本的に、いくつかのオプションがあります。

アプリが VoIP アプリであることを Apple に納得させることができれば、VoIP ソケットを登録することができ、OS はそのソケットにアクティビティがあるたびにバックグラウンド アプリを再開します。

ただし、主なオプションは、アプリがバックグラウンドに置かれたときに実行する必要がある未処理のアクティビティのバックグラウンド タスクを登録することです。通常、その作業を完了するのに 10 分かかります。

メールはあなたが得られない特権を持つ特別なアプリです。

Latitude などのアプリは、通常、位置情報を更新するために自分自身を登録します。特に、地理的な位置が大きく変化したときに起動するようにします。GPS トラックを記録するアプリも同様のことを行います。

于 2012-06-21T16:00:31.670 に答える
0

それを見つけた !

Apple の Multitasking Guideの Suhail Patel のリンクを使用して、Info.plistにvoipタグを追加し、setKeepAliveTimeout:handler:メソッドを使用して、アプリがスリープ状態になったら必要に応じて再起動します。UIBackgroundModesUIApplication

これが多くの人に役立つことを願っています!

もちろん、このアプリを App Store に掲載することはできませんが、社内で開発する場合は、これが最善の方法だと思います。

正しい方向を示してくれてありがとう!

于 2012-07-05T12:36:54.067 に答える
0

Apple のメール クライアントにはバックグラウンド デーモンがあり、それを実行し続けますが、独自のアプリケーションではそれができません。アプリがバックグラウンド状態になると、その操作を停止する必要があります。ディスクへの転送または書き込みを完了するために、バックグラウンドでもう少し時間を要求できます ( Apple のマルチタスキング ガイドの「バックグラウンドでの有限長タスクの実行」セクションを参照してください) 。

Google Latitude には、場所に基づいて生成されたイベントがあります。これは、Apple が特定のタイプのアプリケーション用に導入した特別なタイプのバックグラウンド処理です ( Apple のマルチタスク ガイドの「長時間実行バックグラウンド タスクの実装」セクションを参照)。ただし、これは HTTP 同期には使用できません。オーディオ、場所、voip、ニューススタンドのコンテンツ、Bluetooth、および外部ハードウェアの添付ファイルにのみ使用できます。

プッシュはアラートを生成するだけなので、解決策とは思えません。ユーザーが通知の開始をトリガーするまで、アクションはトリガーされません。

于 2012-06-21T15:55:40.290 に答える