2012-03-13 11 views
4

私はiOSの中で、バックグラウンドのアプリのみ私のアプリを10分以上長持ちさせる方法。バックグラウンドで?

  • 有限長のタスク(10分)
  • 場所の更新
  • を実行することができるというのVoIP
  • を知っているオーディオ

あります私のアプリケーションが10分後に終了するのを避けるための方法。バックグラウンドで?私はアプリストアに私のアプリを提出することはありませんので、すべてが許可されています(プライベートフレームワーク、gpsを使用しても私はそれを必要としません)私はリンゴはこれをお勧めしません知っているが、私はそれを限界なく走らせる必要がある。

VoIPを含むいくつかの可能性を模索しましたが、10分ごとに30秒しか得られません。これでは不十分です。私もこの記事を読んでいます: iPhone - Backgrounding to poll for events ここで、JackPearseはVoIP 30秒タスクを使って10分の有限長タスクを「復活」する方法を指定しました。しかし私は自分の仕事が10分ごとに始まり終わることを望んでいません。それは連続して走らなければなりません。 私も彼のUPDATE2を試しましたが、それは私のために働いていません。 私はGSEvent.type 2012でUIEventをインターセプトしようとしましたが、私のバックグラウンドタスクは終了したようですが、運はありません。不思議なことに、私のバックグラウンドタスクは、Xcodeを開いてデバッグしても決して終了しませんが、(シミュレータだけをテストする)10分後に終了します。

答えて

1

バックグラウンドで曲を連続して再生することで、アプリケーションをバックグラウンドで10分以上保持する方法を見つけました。 AppDidFinishLauchingオン :AppDidEnterBackgroundで

[[AVAudioSession sharedInstance] setActive:YES error:&error]; 
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:&error]; 
NSURL *url = [NSURL fileURLWithPath:...]; //Song URL 
AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error]; 

player.numberOfLoops = -1; 
[player play]; 

あなたは永遠に続くことができ、バックグラウンドでセレクタを実行することができます。アプリケーションは中断されず、UIApplication backgroundtimeRemainingをチェックして、決して減少することはありません。

もちろん、plistのバックグラウンドオーディオアプリとして宣言してください。

+0

私のアプリケーションはvoipアプリケーションであり、アプリケーションがバックグラウンドのときは、通知または着信呼び出し音が鳴るはずです。しかし、上記の解決策では、通知音を再生していません。どんな解決策ですか? :-) – Saif

+0

これは通常のアプリでは使用しないでください!私は調査とイントラの配布のためでした。これはバックグラウンドであなたのアプリを維持するための公式の方法ではありません。 –

+0

あなたはそのコードをappdidfinishlaunchingに入れますか? appdidenterbackgroundに何を入れるのですか? – eggie5

1

アプリがバックグラウンドに行くとき、私はすでに(自動的に時々後にないデバイスでリンゴがクラッシュしたため)シミュレータでもthat.Itの作品のように(nsrunloop、* performselectoronmainthread *)をいくつかの方法を試してみました。

ステータスはBOOL変数です。

- (void)applicationDidEnterBackground:(UIApplication *)application { 

    while (!**status**) { 
     [[NSRunLoop mainRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:60.0]]; 
     [self goBackground]; 
    } 
} 
関連する問題