Я делаю приложение VOIP, когда поступает входящий звонок, и приложение находится на переднем плане. Я играю Рингера с кодом нижеКак сохранить вибрацию устройства в фоновом режиме
self.ringTimer = [[TimerService sharedInstance] createIntervalTimerWithInterval:2500 queue:dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0) andBlock:^{
AudioServicesPlayAlertSound(kSystemSoundID_Vibrate);
}];
NSString *ringingPath = [[NSBundle mainBundle] pathForResource:@"incoming_sound" ofType:@"mp3"];
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
[audioSession setCategory:AVAudioSessionCategoryAmbient withOptions:AVAudioSessionCategoryOptionAllowBluetooth | AVAudioSessionCategoryOptionMixWithOthers error:nil];
// for normal phone receiver route it to speaker
if ([[audioSession audioRoute] isEqualToString:kAudioSessionDevice_Phone]) {
[audioSession overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:nil];
}
NSURL *soundUrl = [NSURL fileURLWithPath:ringingPath];
NSError *error;
self.audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:soundUrl error:&error];
self.audioPlayer.numberOfLoops = -1;
[self.audioPlayer play];
Приведенный выше код работает хорошо, и он также уважать кнопку бесшумный переключатель при воспроизведении звука.
Однако, если я скрою приложение, устройство перестанет вибрировать и воспроизводит входящий звук. Это можно преодолеть, если я установил AVAudioSession
категории в AVAudioSessionCategoryPlayback
, но эта категория не будет молчать звук при включенном тихом переключателе.
Я вижу другие приложения, такие как
- (прием входящего в приложение), они могут держать вибрировать устройство после того, как минимизировать до тайм-аута вызова не будет достигнут (ни одного ответа) об одном минута без уведомления перед остановкой уведомления (получение уведомления о завершении вызова).
- (Получать входящие, когда приложение закрыто), они также делают то же самое, потому что, когда я отклоняю уведомление, устройство все еще может вибрировать в течение одной и той же продолжительности.
(Прием входящих в приложении) они показывают длинное уведомление, чтобы сохранить вибросигнал. Если я отклоню это уведомление, он сразу же остановится.
(прием входящего, когда приложение закрыто), если я отклонить уведомление, вибрации устройства для более 2-3 раз и показать длинное уведомление (то же самое, как если принимать входящие в приложение)
(Прием входящего в приложение) Я не уверен в скайпе, но для Viber, когда минимизировать приложение его остановить вибрировать мгновенно.
(прием входящего, когда приложение закрыто), я думаю, что они сделали так же, как facebook (не уверен)
Как я могу сделать вибросигнал без уведомления, как Line
при минимизации приложения?
Если мне удастся найти способ и заставить его работать как Line
мне нужно использовать Voip push, когда приложение не находится на переднем плане для реализации этого метода? (Будет ли работать обычное push-уведомление?)
Используете ли вы push-уведомление или Pushkit (Silent push notification)? – Hasya
Это сработало? – Hasya
@Hasya Извините, у вас нет времени изучить это. Мне удается заставить его работать без 'PushKit' для' Receive входящего в приложение' (Держите вибрировать устройство при минимизации). Но для того, что за пределами приложения, я думаю, что 'PushKit' требуется. Будут следовать вашему предложению и дать отзыв в выходные дни. – SaintTail