0

とりわけ、サーバーと毎分自動的に同期することになっている iPhone アプリを作成しています。アプリを同期させることはできますが、バックグラウンドで (アプリが最優先のときに) 時間を追跡し、自動的に同期する方法がわかりません。

私はマルチスレッド プログラミングで複雑なことをしたことがないので、まだかなり初心者です。

誰にもこれを行う方法のアイデアはありますか? または、少なくとも開始するのに適した場所ですか?

4

3 に答える 3

0
  1. 1分ごとにアプリを同期しようとすると、アプリの速度が低下し、バッテリーが消耗します。できることは、一部の構成が変更されているかどうかを確認してから、アプリを同期することです。

  2. このようなものについては、いくつかの構成が変更されたときに、おそらくバックグラウンドスレッドを使用してタスクを実行できます。

  3. アプリが終了するときのシナリオ、メソッドでの特別な処理を考慮する必要がありますapplicationDidEnterBackground

于 2012-06-26T17:46:45.903 に答える
0

繰り返し同期呼び出しを設定するには、繰り返しNSTimerインスタンスを使用する必要があります。NSTimerを設定するために必要なすべてのサンプルコードは、Appleの「タイマーの使用ガイド」にあります。

UIをブロックしないようにするために、dispatch_asyncを使用してdispatch_queueを使用することをお勧めします。または、ASIHTTPRequestネットワークライブラリを使用している場合は、ネットワーク操作にNSOperationQueuesが自動的に使用されます。そうでない場合は、自分で行う必要があります。

2010/2011年のGrandCentralDispatch and Blocks WWDCセッションビデオを視聴することを強くお勧めします(あなたは登録済みの開発者だと思います)。このトピックは1つの質問よりも大きいため、GCDを使用する際の微妙な点を理解する必要があります。ただし、注意すべき点が1つあります。同期プロセスがアプリのUIの更新で終了する場合は、メインスレッドを介して更新する必要があります。main_queueを使用してdispatch_asyncを介してUI更新メソッドを呼び出す必要があります。セッションビデオはそれを説明します。

最後に、他の人が述べているように、毎分サーバーにアクセスすると、電力が消費される可能性があります。「同期」しなくても、ネットワークに接続するという単純な行為は、iPhoneが毎回3G無線の電源を入れなければならないことを意味します。知っておくべきことです。

于 2012-06-26T21:58:14.493 に答える
0

あなたが使用する方法は-(void)applicationDidEnterBackground:(UIApplication *) application

アプリケーションがバックグラウンドに入ったときに実行するすべてのコードをそこに配置します。

サーバーを毎分チェックしているとしたら、iPhone でこれが可能だとは思いませんが、プッシュメッセージを行う方法があります。

これはプッシュメッセージに関するチュートリアルですhttp://mobiforge.com/developing/story/programming-apple-push-notification-services

ここにも devolper ライブラリがありますhttp://developer.apple.com/library/ios/#DOCUMENTATION/NetworkingInternet/Conceptual/RemoteNotificationsPG/ProvisioningDevelopment/ProvisioningDevelopment.html

プッシュ通知を使用して、アプリに何か新しいものがあることをユーザーに警告し、ユーザーがアプリに戻ると、サーバーから何かをチェックして取得できます。

それが役立つことを願っています

于 2012-06-26T17:50:39.930 に答える