2013-05-03 16 views
8

アプリがバックグラウンドに入り、1分後にメソッドを呼び出すためにNSTimerを使い、17分後にタイマーが機能しなくなりました。NSTimerが一定時間後にバックグラウンドで停止する

フォアグランドに戻ったときにもう一度作業を開始したので、なぜこれが起こっているのか、問題の解決方法を教えてください。

同じ目的のために再帰の遅延を伴う実行セレクタを使用しようとしましたが、再び同じ結果が得られました。解決策を提案してください。どんな助けも完全に評価されます。

+0

タイマーは何をしますか?つまり、リンゴの許可されたバックグラウンドタスクの1つですか? – jcesarmobile

+0

ビルドターゲットのプロパティに「必須バックグラウンドモード」を設定しましたか? –

+0

私は必要な背景モードで "位置更新のためのアプリレジスタ"を追加しました – Himanshu

答えて

6

Wierd issue-私もこれを持っていましたが、以下は私のために働いていました。

//Run the timer on the runloop to ensure that it works when app is in background 

    [[NSRunLoop currentRunLoop]addTimer:self.timer forMode: NSDefaultRunLoopMode]; 
+1

私はこれを使用しましたが、まだタイマーはバックグラウンドで約16分後に停止します – Himanshu

+0

これを見て、それが動作すれば教えてください。 http://stackoverflow.com/questions/8449351/iphone-4-is-there-an-absolutely-certain-way-to-have-a-long-term-nstimer-fire?rq=1 – Xcoder

+0

@himanshu:isあなたの問題は解決されます。私は同じ問題に直面しています.. – Ankur

5

Implementing Long-Running Background Tasksから:

実装するためのより多くの実行時間を必要とするタスクのために、あなたは彼らが中断されることなく、バックグラウンドでそれらを実行するために特定の権限を要求する必要があります。 iOS版では、唯一の特定のアプリの種類は、バックグラウンドで実行が許可されています、このような音楽プレーヤーアプリとしてバックグラウンドにある間に、ユーザに可聴コンテンツを再生

  • アプリ、自分の通知をユーザーに保つ
  • アプリ新しいコンテンツに外部アクセサリー
  • をからの定期的な更新を受信
  • アプリをダウンロードして処理する必要があり、インターネットプロトコル(VoIP)
  • ニューススタンドアプリのボイスオーバーをサポートするなど、ナビゲーションアプリ
  • アプリとして常に、場所
0

数分が十分でない場合、それは使用していますない限り、あなたはbackgorundにアプリの実行無限の時間を作ることはできません。

  • オーディオ再生
  • 場所サービス
  • 外部アクセサリ

バックグラウンドタスクを使用すると、他のすべてのアプリの実行時間が10分、ローカル通知が通知されます。

+0

バックグラウンドモードのロケーションサービスを使用していますが、それでもタイマーは停止しています – Himanshu

関連する問題