2012-02-22 7 views
0

私のアプリケーションでiphoneバックグラウンドプロセスを使用しています。それはバックグラウンドで実行されていますが、10分後にはアプリケーションが終了します。そして長い間働いていない。私のアプリケーションでiphoneのバックグラウンドプロセスが長時間働いていない

私のアプリケーションには、その時点でviewdidloadが開始され、ホームボタンをクリックするとバックグラウンドで実行されます。バックグラウンドでは完璧に走っていますが、10分後にはバックグラウンドプロセスが停止しています。以下は私のコードです。

in .hファイル。私.M

- (void)viewDidLoad { 

    UIBackgroundTaskIdentifier bgTask = nil; 
    UIApplication *app = [UIApplication sharedApplication]; 


    counterTask = [[UIApplication sharedApplication] 
        beginBackgroundTaskWithExpirationHandler:^{ 
         [app endBackgroundTask:counterTask]; 
         //counterTask = UIBackgroundTaskInvalid; 

         // If you're worried about exceeding 10 minutes, handle it here 
         theTimer=[NSTimer scheduledTimerWithTimeInterval:0.5 
                   target:self 
                   selector:@selector(countUp) 
                   userInfo:nil 
                   repeats:YES]; 
        }]; 

    count=0; 
    theTimer=[NSTimer scheduledTimerWithTimeInterval:0.5 
         target:self 
         selector:@selector(countUp) 
         userInfo:nil 
         repeats:YES]; 

    [super viewDidLoad]; 
} 
  • (ボイド)カウントアップ{

    count++; 
    NSString *currentCount; 
    
    currentCount=[[NSString alloc] initWithFormat:@"%d",count]; 
    NSLog(@"timer running in background :%@",currentCount); 
    thecount.text=currentCount; 
    [currentCount release]; 
    

}

IBOutlet UILabel *thecount; 
int count; 
NSTimer *theTimer; 
UIBackgroundTaskIdentifier counterTask; 

上記のコードだけの番号をカウントするために、サンプル地面と背景。 10分後には機能しません。

だから私に手伝ってください。私に助けてください。

+1

よりグーグルグーグルでは、バックグラウンドプロセスを実装する方法を見つけました。これは、ios 3.0以外のすべてのiosで機能します。 http://www.mindsizzlers.com/2011/07/ios-background-location/ –

答えて

4

長時間のバックグラウンドタスクでは最大10分です。 iOSは長時間実行されるバックグラウンドプロセスの考え方を促進するものではなく、ユーザーのためにそれらをやってみるべきではありません。

あなたのコードをそれより長く実行するには、他の外部イベントによってアプリが再び起動されたり、動作し続けることがあります。 GPSロケーションイベント、VoIPタイプのアプリケーションでの音声または着信VoIP接続の再生。

+1

お返事をありがとうございます。私のアプリケーションでは、私はいくつかの時間にサーバーにgpsデータを送信しています。上記のコードはバックグランドで動作するコードです。しばらくの間、サーバーにgpsデータを送信する方法の詳細なサンプルを提供してください。アプリケーションが実行されます。だから私はそれを理解することができます。 –

+0

したがって、デバイスのロケーションの通知を受け取ると、そのロケーションをサーバーに送信するようにタスクをスケジュールできます。これは 'CLLocationManagerDelegate'プロトコル実装クラスの' locationManager:didUpdateToLocation:fromLocation'メソッドから行うことができます。 – macbirdie

+0

オハイオ州、あなたは私のポイントを取得していない私は特定の時差でバックグラウンドモードでユーザーを追跡しています。だから私はバックグラウンドタスクのように実装する必要があります。 [私はこのように実装したい](http://stackoverflow.com/questions/5323634/app-running-in-background)しかし、私は正しく答えを理解することはできません。私を案内したいですか? –

関連する問題