2014-09-11 22 views
5

iOS 7'de, uygulama arka plana girdiğinde bir kimlik doğrulama ekranı sundu (UIApplicationDidEnterBackgroundNotification'a abone olarak). Kimlik doğrulama denetleyicisi hassas bilgileri kaldırır, böylece arka plan ekran görüntüsü herhangi bir kullanıcı bilgisi göstermedi. IOS 8'de bu artık çalışmıyor. Arka plan ekran görüntüsü artık uygulamanın en son çalıştığını ve kimlik doğrulama kontrol cihazını değil, uygulama önalana geri döndüğünde kimlik doğrulama kontrol cihazının aktif olduğunu gösteriyor.iOS 8: Arka plana taşınmadan önce hassas bilgileri görünümlerden kaldırın

Şimdilik bir iş buldum. UIApplicationDidEnterBackgroundNotification kullanmak yerine name:UIApplicationWillResignActiveNotification'u kullanabilirim ancak kullanıcı uygulamayı terk ederken bir flaşa neden olur.

Bu bir hata mı, yoksa elma, arka plana geçmeden önce hassas bilgileri görünümlerden kaldırmanın yeni bir yolunu sağladı.

Not: ignoreSnapshotOnNextApplicationLaunch'u applicationWillResignActive: ve applicationDidEnterBackground: içine koyma yardımcı olmadı.

Güncelleme

: bir hata raporu @ Gurudev0777 için

+0

Bir gözetim olmadığından emin olmak için bunu Apple ile bir hata olarak kabul ediyorum. En kötü durum, hata raporunuz geçersiz ve atılacaklar. –

+2

Hmmm. Etkinliğim istendiğinde uygulamanız her zaman hassas verileri temizledi. Bu mesajı okuyana kadar, iOS 8 altındaki uygulağımdan Ana düğmeyi tıkladığında "flaş" ı fark etmemiştim. Bir hata raporu iyi bir fikir gibi geliyor. – rmaddy

+0

Hata raporunda herhangi bir kelime var mı? Bu büyük bir sorun gibi görünüyor. – SAHM

cevap

-1
here we are putting an imageview while the app animate to background - 
-(void)applicationWillResignActive:(UIApplication *)application 
{ 
    imageView = [[UIImageView alloc]initWithFrame:[self.window frame]]; 
    [imageView setImage:[UIImage imageNamed:@"[email protected]"]]; 
    [self.window addSubview:imageView]; 
} 

Here is the code to remove the imageview: 
- (void)applicationDidBecomeActive:(UIApplication *)application 
{ 
    if(imageView != nil) { 
     [imageView removeFromSuperview]; 
     imageView = nil; 
    } 
} 
It is working and tested many times. 
*** Please test this scenario into the device not in simulator. 
4

Benzer bir yaklaşım oluşturulur, ancak içeriğin anlaşılmaz yerine UIBlurEffect kullanır ve farklı cihaz ekran değerlerinizle ilgili endişelenmek olumsuz bulunmamaktadır. Uygulama temsilci: Büyü gibi

#define MY_BACKGROUND_SCREEN_TAG 1001//or any random but UNIQUE number. 

- (void)applicationDidEnterBackground:(UIApplication *)application 
{ 
    // Visual effect view for blur 
    UIBlurEffect *blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleDark]; 
    UIVisualEffectView *blurView = [[UIVisualEffectView alloc] initWithEffect:blurEffect]; 
    [blurView setAutoresizingMask:(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight)]; 
    [blurView setFrame:self.window.frame]; 
    blurView.tag = MY_BACKGROUND_SCREEN_TAG; 

    [self.window addSubview:blurView]; 
} 

- (void)applicationWillEnterForeground:(UIApplication *)application 
{ 
    // remove blur view if present 
    UIView *view = [self.window viewWithTag:MY_BACKGROUND_SCREEN_TAG]; 
    if (view != nil) 
    { 
     [UIView animateWithDuration:0.2f animations:^{ 
      [view setAlpha:0]; 

     } completion:^(BOOL finished) { 
      [view removeFromSuperview]; 
     }]; 
    } 
} 

eser ...

Düzenlendi 2015/05/18: @Simeon Pirinç kalıcı diyaloglar hakkında gözlem için, bunun yerine self.window için bulanıklık görünümü eklemek revize sayesinde rootviewController.view

Edited 8/23/2016: Teşekkürler @ gözlem için gözlem: Yeniden otomatik düzeltme maskesi.

+0

+1; Ayrıntılar sayısı! –

+0

Bu kaliteli çözüm, tam ekran modal (en azından bir iPhone üzerinde) sunulduğunda ne yazık ki bulanık değil - bu konu üzerinde çalışmak için, bulanıklık görünümünü root view controller'ın görünümünden ziyade 'self.window' olarak ekliyorum. –

+0

http://stackoverflow.com/questions/18959411/controlling-the-screenshot-in-the-ios-7-multitasking-switcher – TheCodingArt

İlgili konular