streamer
次のように、30 分後に停止するバックグラウンド タスクがあります。
- (void)applicationDidEnterBackground:(UIApplication *)application
{
bgTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
[[UIApplication sharedApplication] endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
while ([[NSDate date] timeIntervalSinceDate:[[NSUserDefaults standardUserDefaults]objectForKey:@"date"]]<30) {
NSLog(@"<30");
[NSThread sleepForTimeInterval:1];
}
NSLog(@"Stop");
[main stopStreaming];
});
}
しかし問題は、ユーザーがバックグラウンドを入力したときに bgTask が再度呼び出された場合です。つまり、ユーザーがバックグラウンドを 10 回入力した場合、バックグラウンドは 10 回になります。UIBackgroundTaskIdentifier
これにより、ストリーマーの再生がうまくいかずNSLog(@"<30");
、同じ秒に複数回呼び出されます。
ご意見をお聞かせください。