приостановить игру, когда появится push-уведомление - PullRequest
0 голосов
/ 03 апреля 2011

Я хочу, чтобы мой метод паузы вызывался, когда появляется push-уведомление (push, sms).

Прежде всего, концепция игры: при запуске приложения отображается главный вид, гдеВы можете выбрать один из трех разных режимов игры.Таким образом, если пользователь играет в одном игровом режиме и получает смс, игра должна остановиться, и если он отменит уведомление, игра должна продолжиться.

имена контроллеров представления трех различных режимов - PlayViewController, PlayTwoViewController и TimePlayViewController.

Итак, вот мое приложение Delegate:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    

// Override point for customization after application launch.

// Add the view controller's view to the window and display.
[self.window addSubview:viewController.view];
[self.window makeKeyAndVisible];

return YES;

}

- (void)applicationWillResignActive:(UIApplication *)application { [PlayViewController pauseGame]; [PlayTwoViewController pauseGame];[TimePlayViewController pauseGame]; }


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

}

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

}

-(void)applicationDidBecomeActive:(UIApplication *)application { [PlayViewController pauseGame]; [PlayTwoViewController pauseGame];[TimePlayViewController pauseGame]; }

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

}

метод pauseGame всегда один и тот же.Код:

-(IBAction)pauseGame {

[myTimer invalidate];

PauseViewController *screen = [[PauseViewController alloc] initWithNibName:nil bundle:nil];
screen.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[self presentModalViewController:screen animated:YES];
[screen release];   }

myTimer - это просто NSTimer.

Приложение вылетает, когда я собираю его с помощью приведенного выше кода. Консоль говорит:

2011-04-03 11: 22: 10.091 appName [458: 207] + [PlayViewController pauseGame]: нераспознанный селектор отправлен в класс 0x1d39c 2011-04-03 11: 22: 10.093 appName [458: 207] * Завершение работы приложенияк необработанному исключению 'NSInvalidArgumentException', причина: '+ [PlayViewController pauseGame]: нераспознанный селектор, отправленный в класс 0x1d39c', завершает работу после вызова экземпляра 'NSException'

1 Ответ

2 голосов
/ 03 апреля 2011

Реализация:

- (void)applicationWillResignActive:(UIApplication *)application

http://developer.apple.com/library/ios/#documentation/uikit/reference/UIApplicationDelegate_Protocol/Reference/Reference.html

"Этот метод вызывается, чтобы сообщить приложению, что оно собирается перейти из активного в неактивное состояние. Это может происходить при определенных типах временных прерываний (таких как входящий телефонный звонок или SMS-сообщение) или когда пользователь закрывает приложение и начинает переход в фоновое состояние. Приложение в неактивном состоянии продолжает работать, но не отправляет входящие события респондентам.

Этот метод следует использовать для приостановки текущих задач, отключения таймеров и снижения частоты кадров OpenGL ES. Игры должны использовать этот метод, чтобы приостановить игру. Приложение в неактивном состоянии должно выполнять минимальную работу, пока оно ожидает перехода в активное или фоновое состояние. "

...