3

私はこのトピックを検索しましたが、ほとんどの場合、Apple の制限に直面しています。1 分に 1 回サーバーを制御する必要があり、変更があった場合はローカル通知を送信します。私が必要としているのは、タイマー(NSTimer)をバックグラウンドで維持する方法(またはデバイスロックがアクティブになっている場合..)です。ありがとう

4

3 に答える 3

5

サーバー部分でロジックを実行し、変更がある場合はプッシュ通知を送信できます。

于 2012-04-04T13:55:46.593 に答える
4

アプリのデザインを再考する必要があります。OSがメモリを解放するために探しに出たときに、アプリが強制終了されないことを保証することはできません。そのシナリオではどうなりますか?ここでは、プッシュ通知が最善の策です。まず、60秒ごとにサーバーをポーリングする必要はありません。関心のあるコンテンツがサーバー上で変更されたときに通知を送信するだけです。次に、アプリが実行されていなくても通知が受信されます。

もう1つの問題は、info.plistを介して、アプリがサポートするバックグラウンドモードをAppleに通知する必要があることです。これは、音楽やVoIPをバックグラウンドで実行するアプリ向けです。Webサーバーのポーリングは、サポートされているモードの1つではありません。プッシュ通知を使用すると、アプリがフォアグラウンドに入ったときに通知を介して渡された情報を処理するために使用できるいくつかのデリゲートメソッドも取得できます。

于 2012-04-04T14:01:27.910 に答える
2

私のアプリは、次のコードでバックグラウンドで継続的に実行されます.....

-(void)applicationDidEnterBackground:(UIApplication *)application

{ 
  UIApplication *app = [UIApplication sharedApplication];

  UIBackgroundTaskIdentifier bgTask = 0;

  backgroundTimer = [NSTimer scheduledTimerWithTimeInterval:10 target:self   selector:@selector(backgroundTask) userInfo:nil repeats:YES];

  bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
    [app endBackgroundTask:bgTask];
  }];

}

ここで、 backgroundTaskメソッドで必要なことを行います。

于 2012-12-26T10:33:17.297 に答える