2015-08-27 2 views
1

Возможно ли открыть приложение из режима фона в некотором роде? Например, если приложение в фоновом режиме проверяет сервер на наличие какого-либо флага, а затем при запуске оно автоматически переходит на передний план?iOS - автоматически открыть приложение из фона

Если нет, могу ли я отобразить сообщение и воспроизвести звук для того, чтобы пользователь запросил повторное открытие приложения?

Как, например, WhatsApp достигает этого?

ответ

5

Невозможно автоматически открыть приложение, что означает отображение приложения для пользователя.

Однако можно использовать Push-уведомления, чтобы ваше приложение открылось в фоновом режиме, чтобы оно могло выполнять короткую задачу. Это достигается путем создания поля push notification с полем content-available.

Если ваш сервер отправляет push-уведомления на устройство пользователя, когда новый контент доступен для вашего приложения, вы можете попросить систему запустить ваше приложение в фоновом режиме, чтобы сразу начать загрузку нового контента. Цель этого фонового режима состоит в том, чтобы свести к минимуму количество времени, которое истекает между тем, когда пользователь видит push-уведомление и когда ваше приложение может отображать связанный контент. Приложения обычно пробуждаются примерно в то же время, когда пользователь видит уведомление, но это все равно дает вам больше времени, чем в противном случае.

Чтобы поддержать этот фоновый режим, включите параметр «Удаленные уведомления» в разделе «Режимы фона» на вкладке «Возможности» в проекте Xcode. (Вы можете также включить эту поддержку, включив в UIBackgroundModes ключ со значением remote-notification в Info.plist файле вашего приложения.)

Для нажимного уведомления для запуска операции загрузки, полезная нагрузка в уведомлении должна включать в себя ключ контент, доступный с его значением установлен на 1. Когда этот ключ присутствует, система пробуждает приложение в фоновом режиме (или запускает его в фоновом режиме) и вызывает метод делегата application:didReceiveRemoteNotification:fetchCompletionHandler:. Ваша реализация этого метода должна загружать соответствующий контент и интегрировать его в ваше приложение.

При загрузке любого контента рекомендуется использовать класс NSURLSession для запуска и управления загрузками. Сведения о том, как использовать этот класс для управления задачами загрузки и загрузки, см. URL Loading System Programming Guide.


может отобразить сообщение и воспроизводить звук для пользователя, чтобы запросить приложение заново?

Да, вы можете просто использовать Local Notification or a Push Notification

+0

Если мы предполагаем, что приложение установлено на устройстве, но никогда не открывалось (поэтому связь с APN никогда не была установлена, поэтому никаких push-уведомлений не произошло) - может ли что-либо вызвать приложение для запуска (в фоновом режиме), кроме явного открытия приложения пользователем (или каким-либо другим способом, который заставляет приложение открываться и фактически выходить на передний план)? – uerceg

+1

@uerceg, Нет, я не думаю, что это возможно. –

0

Согласно Apple, когда приложение в фоновом режиме все функции будет автоматически приостанавливается и возобновляется при приложение в АКТИВИРУЙТЕ again.The Единственное, что вы можете сделать местное уведомление с значком или звук, пожалуйста, прочитайте эту документацию для получения дополнительной информации Notification

0

если приложение в фоновом режиме проверяет сервер для некоторого флага, и тогда, когда срабатывает, она автоматически переходит на передний план?

Невозможно на данный момент.

Могу ли я показать сообщение и воспроизвести звук для пользователя, чтобы запросить приложение повторно открыть?

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

UILocalNotification* localNotification = [[UILocalNotification alloc] init]; 
localNotification.alertBody = @"AlertBody"; 
localNotification.alertAction = @"AlertAction"; 
localNotification.timeZone = [NSTimeZone defaultTimeZone];  
[[UIApplication sharedApplication] scheduleLocalNotification:localNotification]; 

При открытии приложения, нажав на уведомление, после параметра «launchOptions» получит значение:

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

Debug и найти значение для launchOptions:

[launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey]; 
Смежные вопросы