2016-12-01 7 views
6

Я пытаюсь изменить снимок экрана, который автоматически захватывается iOS, когда приложение входит в фоновый режим.Когда выполняется захват экрана ios auto?

Однако я не совсем уверен, когда этот снимок экрана будет снят.

Например:

Если потянуть вниз панель уведомлений в то время как в приложении следующий метод называется:

- (void) applicationWillResignActive:(UIApplication *) application { 
} 

Кроме того, если вы дважды нажмите кнопку домой, а в приложении тот же метод называется. Кроме того, если отображается предупреждающее представление, вызывается «applicationWillResignActive».

Но в обоих этих случаях

- (void) applicationDidEnterBackground:(UIApplication *) application { 
} 

не называется.

Итак, мой вопрос в том, есть ли снимок экрана после вызова приложенияWillResignActive, даже если приложение не входит в фоновый режим? Или iOS только фиксирует скриншот после applicationDidEnterBackground?

ответ

3

вы можете просмотреть here, в общем, изменить вид перед возвращением из applicationDidEnterBackground:

+0

или даже пойти прямо к первоисточнику: https://developer.apple. ком/библиотека/содержание/документация/iPhone/Концептуальный/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html – Tommy

1

Да.

- (void) applicationWillResignActive:(UIApplication *) application { }

вызывается, когда вы тянете вниз панель уведомлений или даже при двойном щелчке на кнопку домой. Вы должны сделать что-то здесь, чтобы предотвратить захват вашей конфиденциальной информации ОС. Один из способов может быть:

  1. Набор размытые экран наложения до приложение идет в фоновом режиме
  2. После того, как приложение становится активным удалить эту пометку

Что-то вроде этого:

-(void)applicationWillResignActive:(UIApplication *)application 
{ 
    imageView = [[UIImageView alloc]initWithFrame:[self.window frame]]; 
    [imageView setImage:[UIImage imageNamed:@"blurryImage.png"]]; 
    [self.window addSubview:imageView]; 
} 

И затем удалите этот оверлей перед тем, как приложение поступит на передний план:

- (void)applicationDidBecomeActive:(UIApplication *)application 
{ 
    if(imageView != nil) { 
     [imageView removeFromSuperview]; 
     imageView = nil; 
    } 
} 
+0

Это не отвечает на мой вопрос. Я понимаю, что applicationWillResignActive вызывается в этих ситуациях. Однако когда приложение делает снимок экрана? applicationWillResignActive или applicationDidEnterBackground? – lostintranslation

+0

Хорошо, я понимаю. См. Документацию, предоставленную ** Apple ** в этих методах в вашем приложении AppDelegate.m, вы найдете ответ. Кстати, точнее, 'applicationWillResignActive' должен быть ответом на ваш вопрос. – nayem

0

вызывается при выводе панели уведомлений или даже при двойном нажатии кнопки «домой». Вы должны сделать что-то здесь, чтобы предотвратить захват вашей конфиденциальной информации ОС. Один из способов может быть:

Набор размытые экран наложения до приложение идет в фоновом режиме После того, как приложение становится активным удалить эту пометку