У меня есть приложение, работающее на фоновом опросе сервера электронной почты и отправка локального уведомления при изменении. Я могу начать воспроизведение предупреждения из состояния фона, но если телефон вибрирует, звук не воспроизводится. Есть ли способ переопределить это, как звучит сигнал будильника часов, когда вибрирует?Воспроизведение звукового сигнала, когда телефон вибрирует
В моем приложении делегат на старте, я вызываю метод класса моего уведомления по ниже, чтобы настроить для воспроизведения в фоновом режиме:
+ (void)initializeAudioSettings
{
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
NSError *setCategoryError = nil;
BOOL success = [audioSession setCategory:AVAudioSessionCategoryPlayback error:&setCategoryError];
if (!success) {
NSLog(@"Error setting up Audio session: %@", setCategoryError.description);
}
NSError *activationError = nil;
success = [audioSession setActive:YES error:&activationError];
if (!success) {
NSLog(@"Error setting audio session active: %@", activationError.description);
}
}
Следующих загружаю предупреждение:
- (void)loadAlertSoundID
{
NSLog(@"Loading alert sound");
NSString *soundPath = [[NSBundle mainBundle] pathForResource:@"alert" ofType:@"mp3"];
NSURL *soundURL = [NSURL URLWithString:soundPath];
CFURLRef url = (__bridge CFURLRef)soundURL;
AudioServicesCreateSystemSoundID(url, &_alertSoundID);
}
Тогда, когда я «м уведомление о новом сообщении, я называю мой бдительный метод:
- (void)playAlert
{
NSLog(@"Playing alert");
AudioServicesPlaySystemSound(_alertSoundID);
_alertShouldBePlaying = YES;
_alertIsPlaying = YES;
AudioServicesAddSystemSoundCompletion(_alertSoundID, nil, nil, playSoundFinished, (__bridge void*)self);
[NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(vibrate:) userInfo:nil repeats:YES];
}
И для завершения, мои завершающие бло ck .:
void playSoundFinished (SystemSoundID sound, void *data)
{
Alert *alert = [Alert sharedAlert];
if (sound == alert.alertSoundID)
{
alert.alertIsPlaying = NO;
// Repeat until alert is disabled
if (alert.alertShouldBePlaying && !alert.alertIsPlaying)
{
[alert playAlert];
}
}
}
Это функция «Получите меня от театра»? –
Я строю это как инструмент для внутреннего использования в офисе. Есть возможность пойти «без работы», которая переключается исключительно на вибрацию, а затем автоматически возвращается на следующий день, когда начинается работа. – Chris
Весь смысл ставить телефон на вибрацию - это не звучит. – rmaddy