我正在使用phonegap和jquery mobile开发iphone应用程序。当应用程序关闭并进入后台模式时,我试图模糊屏幕,以便在应用程序恢复时,屏幕上的敏感数据将模糊不清。
我试图在暂停事件中执行此操作,但看起来IOS在暂停事件之前截取应用程序的屏幕截图,因此我的模糊代码无法在IOS恢复时显示的屏幕截图中捕获应用
有没有人对如何使其发挥作用有任何想法?
暂停事件由UIApplicationDidEnterBackgroundNotification触发,这意味着已经在后台拍摄的应用程序已经拍摄。在此之前是否有可以挂钩的事件?
当您双击主页按钮时显示屏幕截图时,在ios7中这将更为重要。在ios6中,只有在应用程序恢复并加载时才会显示一瞬间。
谢谢!
我在暂停时尝试过的代码并恢复了phonegap听众。
// listen for events
document.addEventListener("resume", onResume, false);
document.addEventListener("pause", onPause, false);
// show passcode if enabled, maybe even re-fresh app to start new session and clean up memory issues?
function onResume() {
// unblur page
var filterVal = 'blur(0px)';
$('.ui-page').delay(1000).css('webkitFilter', filterVal);
}
function onPause() {
var filterVal = 'blur(10px)';
$('.ui-page').css('webkitFilter', filterVal);
}
答案 0 :(得分:1)
我在这里遇到同样的问题。如果您的应用启用了多任务处理。您可以通过添加当前代码
来更改appdelegate中的本机代码- (void)applicationDidEnterBackground:(UIApplication *)application {
NSLog(@"Application Did Enter Background");
self.viewController.webView.hidden = YES;
NSString *splashImage;
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
splashImage = @"Default-Portrait~ipad.png";
}
else {
splashImage = @"Default~iphone.png";
}
UIImageView *splash = [[UIImageView alloc]initWithFrame:[self.window frame]];
[splash setImage:[UIImage imageNamed:splashImage]];
[self.window addSubview:splash];
}
- (void) applicationDidBecomeActive:(UIApplication *)application {
NSLog(@"Application Did Become Active");
if([[self.window subviews] count]>1) {
[NSThread sleepForTimeInterval:0.3];
[[[self.window subviews] lastObject] removeFromSuperview];
}
self.viewController.webView.hidden = NO;
}
- (void)applicationWillResignActive:(UIApplication *)application {
NSLog(@"Application Did Resign Active");
self.viewController.webView.hidden = YES;
NSString *splashImage;
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
splashImage = @"Default-Portrait~ipad.png";
}
else {
splashImage = @"Default~iphone.png";
}
UIImageView *splash = [[UIImageView alloc]initWithFrame:[self.window frame]];
[splash setImage:[UIImage imageNamed:splashImage]];
[self.window addSubview:splash];
}
但是,请确保您的应用支持多任务处理。否则,由于在关闭多任务处理功能时未调用applicationDidEnterBackground,因此无法工作。和应该调用的函数(applicationWillTerminate),它既不被调用也不被调用。
答案 1 :(得分:0)
phonegap插件 cordova-plugin-privacyscreen 可以解决问题 - 它会在背景化之前用启动图像替换视图,然后将其清除。