Приложение Apple только что было отклонено Apple, так как оно неправильно реализует фоновый режим, и это приложение VOIP с использованием iOS.Выполнение услуги VOIP (PJSIP) в фоновом режиме
Мой нечетное код, который держал его работы был
[self performSelectorOnMainThread:@selector(keepAlive) withObject:nil waitUntilDone:YES];
[application setKeepAliveTimeout:KEEP_ALIVE_INTERVAL handler: ^{
[self performSelectorOnMainThread:@selector(keepAlive) withObject:nil waitUntilDone:YES];
}];
Что я знаю, это неправильно
Затем я следовал
http://blog.dkaminsky.info/2013/01/27/keep-your-ios-app-running-in-background-forever/ который является VOIP хак, чтобы он работает все время. Снова я думаю, что это неправильно.
Мне просто нужно вызвать один метод, чтобы сохранить PJSIP в живых.
Как это сделать должным образом?
UPDATE
Я посмотрел на руководство компании Apple, кажется, это правильно
[application setKeepAliveTimeout:KEEP_ALIVE_INTERVAL handler: ^{
[self performSelectorOnMainThread:@selector(keepAlive) withObject:nil waitUntilDone:YES];
NSLog(@"Fire");
}];
Однако я не уверен, как настроить PJSIP TCP-порт для работы в фоновом режиме.
APPLE: Настройте один из сокетов приложения для использования VoIP.
пробеги отлично на фоне его только Apple, отвергая его
2,16
Мы обнаружили, что ваше приложение использует фоновый режим, но не включает в себя функциональные возможности, требует, чтобы режим запуска постоянно. Это поведение не соответствует Руководству по обзору App Store.
Мы обнаружили, что ваше приложение объявляет о поддержке VoIP в ключе UIBackgroundModes в вашем Info.plist, но не поддерживает входящие звонки с подключенного VoIP-сервиса.
Если ваше приложение не поддерживает входящие звонки с его подключенного VoIP-сервиса, режим фона voip не подходит. Как указано в Руководстве по программированию iOS, этот ключ предназначен для приложений, которым необходимо отслеживать сокеты для входящих вызовов:
«Вместо того, чтобы постоянно поддерживать VoIP-приложения, система позволяет их приостанавливать и предоставляет средства для мониторинга их сокеты для них. Когда обнаружен входящий трафик, система пробуждает приложение VoIP и возвращает управление его сокетам ».
Пожалуйста, изучите значение «аудио» в ключе UIBackgroundModes вашего файла Info.plist. Использование режима фонового звука будет поддерживать текущие исходящие VoIP-вызовы, пока ваше приложение находится в фоновом режиме.
Было бы уместно добавить функции VoIP или удалить настройку «VoIP» с помощью ключа UIBackgroundModes. Для вопросов с дискретным кодом кода вы можете обратиться к технической поддержке Apple Developer.Пожалуйста, убедитесь, что:
Update 2
PJSIP сказал мне, что разъемы маркируются для VOIP, и поэтому я понятия не имею, почему это отвергается
Я только что нашел это руководство, путающий бит настраивает ваши сокеты приложений, это библиотека под названием PJSIP, которая обрабатывает все. – Burf2000
Как установить: настройте один из сокетов приложения для использования VoIP. | Прежде чем перейти на задний план, вызовите метод setKeepAliveTimeout: обработчик: метод установки обработчика, который будет выполняться периодически. Ваше приложение может использовать этот обработчик для поддержания своего сервисного соединения. Настройте свой аудиосеанс для обработки переходов в активном режиме и из него. – Eesha