0

わかりました、私はこれについて答えを得ていません。:(

Multipeer Connectivity オーディオ ストリーミングがバックグラウンドで動作を停止

これはどうですか?

このコードをバックグラウンドで実行しようとしています。

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

    __block UIBackgroundTaskIdentifier bgTask = [application beginBackgroundTaskWithExpirationHandler:^{

       [application endBackgroundTask:bgTask];
       bgTask = UIBackgroundTaskInvalid;
    }];


    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

        NSTimer *aTimer = [NSTimer timerWithTimeInterval:3
                                                  target:self
                                                selector:@selector(showInformation)
                                                userInfo:nil 
                                                 repeats:YES];

        [[NSRunLoop mainRunLoop]
           addTimer:aTimer
           forMode:NSDefaultRunLoopMode];

        [application endBackgroundTask:bgTask];
        bgTask = UIBackgroundTaskInvalid;
    });

}

明らかに、私はこの関数を同じスコープで定義しています

- (void) showInformation {
  NSLog(@"showInformation is called.");
}

しかし、アプリをバックグラウンドにすると、間隔メッセージが表示され、作業が停止し、フォアグラウンドに戻ったときに作業が続行されます.......

これは、バックグラウンドで実行されていないことを意味しますか?.

これは可能ですか?それとも、ばかげて不可能なことをしようとしていますか?

助けていただければ幸いです。

どうもありがとう。

4

1 に答える 1

1

コードが機能するかどうかに関係なく、アプリ (VOIP、位置情報サービス、オーディオなど) で UIBackgroundModes が設定されていない限り、バックグラウンド タスクはしばらくすると (>10 分) iOS によって終了されます。

バックグラウンド実行の詳細については、バックグラウンド実行とマルチタスクを確認してください。

iOS7 の別のオプションはBackground Fetchを使用することですが、時間の経過を制御することはできません (iOS で使用されるスマート タイマーがあります)。

理解を深めるために、Raywenderlich のBackground Modes in iOS Tutorial を確認してください。

何か機能するものが必要な場合は、以下の SO 投稿を確認してください。

iOS アプリケーションで n 分ごとにバックグラウンドで位置情報を更新するにはどうすればよいですか?

iOS アプリをバックグラウンドで 10 分以上実行している

ユーザーがアプリを強制終了した場合、iOS はアプリをバックグラウンドで起動しますか?

于 2014-02-20T07:43:52.213 に答える