Как правильно умереть с ошибкой, но без трассировки стека в perl?

я пишу Perl-скрипт, и в той части, где я проверяю опции, предоставленные пользователем в командной строке, я хочу выйти с ошибкой, объясняющей, что не так с опциями. В этом случае нет необходимости для трассировки стека, чтобы сопровождать это сообщение об ошибке. Так как же лучше всего умереть с сообщением об ошибке, но без трассировки стека или отладочной информации?

Я пробовал следующее: Пользователь дважды щелкает кнопку «Домой» и переходит к первому экрану с воспроизведением ...

Я хочу реализовать следующие вещи:

  1. Приложение запускает музыку или видео (используя MPMoviePlayerController ) в фоновом режиме. .
  2. Пользователь дважды щелкает кнопку «Домой» и переходит к первому экрану с элементами управления воспроизведением (кнопки ускоренной перемотки назад, воспроизведения или паузы, ускоренной перемотки вперед).
  3. Пользователь нажимает кнопку ускоренной перемотки назад или вперед. Затем приложение воспроизводит предыдущую или следующую музыку или видео.

Для третьего шага я должен знать, какая кнопка нажата. (Насколько я знаю, воспроизводимый в данный момент элемент приостановлен, остановлен .. используя уведомление MPMoviePlayerPlaybackStateDidChangeNotification ).

Какое уведомление я должен зарегистрировать? Или есть другие подходы?

7
задан Vadim Kotov 6 October 2017 в 10:35
поделиться

1 ответ

Ответ получил сам.

Это использование beginReceiveRemoteControlEvents UIApplication.

В соответствующем месте (например, viewWillAppear:) поместите следующий код

[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
[self becomeFirstResponder];

И контроллер представления должен реализовать следующий метод, возвращающий YES

- (BOOL)canBecomeFirstResponder {
    return YES; 
}

И тогда вы можете получить событие удаленного контроллера в следующем методе.

- (void)remoteControlReceivedWithEvent:(UIEvent *)event {

    if( event.type == UIEventTypeRemoteControl ) {
        NSLog(@"sub type: %d", event.subtype);
    }
}

И event.subtype, как показано ниже,

typedef enum {
    // available in iPhone OS 3.0
    UIEventSubtypeNone                              = 0,

    // for UIEventTypeMotion, available in iPhone OS 3.0
    UIEventSubtypeMotionShake                       = 1,

    // for UIEventTypeRemoteControl, available in iPhone OS 4.0
    UIEventSubtypeRemoteControlPlay                 = 100,
    UIEventSubtypeRemoteControlPause                = 101,
    UIEventSubtypeRemoteControlStop                 = 102,
    UIEventSubtypeRemoteControlTogglePlayPause      = 103,
    UIEventSubtypeRemoteControlNextTrack            = 104,
    UIEventSubtypeRemoteControlPreviousTrack        = 105,
    UIEventSubtypeRemoteControlBeginSeekingBackward = 106,
    UIEventSubtypeRemoteControlEndSeekingBackward   = 107,
    UIEventSubtypeRemoteControlBeginSeekingForward  = 108,
    UIEventSubtypeRemoteControlEndSeekingForward    = 109,
} UIEventSubtype;
6
ответ дан 7 December 2019 в 07:37
поделиться