Работа в фоне в iOS и Unity
Маленький плагин который позволяет поработать приложению в свернутом виде на iOS, некоторое время. Зачем это нужно? Например, чтобы дождаться команды с сервера и показать пользователю уведомление, что пришло время его хода.
Весь плагин состоит из двух функций, которые запускают и останавливают задачу при потере фокуса.
-(void) startTask {
[self endTask];
if (bgTask == UIBackgroundTaskInvalid) {
bgTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
[[UIApplication sharedApplication] endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}];
}
}
- (void) endTask {
if (bgTask != UIBackgroundTaskInvalid) {
[[UIApplication sharedApplication] endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}
[UIApplication sharedApplication].idleTimerDisabled = NO;
}
А в Unity это вызывается на OnApplicationFocus:
void OnApplicationFocus (bool focusStatus) {
if (focusStatus)
Background.StopTask();
else
Background.StartTask();
}