在iOS中远程清除应用程序数据

我正在开发一个企业应用程序,客户端需要从设备上远程清除应用程序存储的所有数据。 也就是说,在用户报告丢失的设备的情况下。

如果我们忘记了它的服务端实现,是否可以远程擦除存储在应用程序沙箱中的数据。 如何删除像sqllite文件和证书的应用程序资源中存在的文件?

我正在浏览它的networking,并沿着这个网站 ,声称这样做在他们的产品。

如果能做到的话,我们该如何解决这个问题呢?

远程擦除function已被苹果公司在iOS 4.2以上使用移动我添加。 我不认为他们通过远程通知来做这件事。 在这种情况下,将不会有任何确定的镜头保证,数据从设备中删除。

最好的方法是encryptioniPhone的磁盘上的数据,并只在内存中解密(因为iOS 4有一个类似的机制内置)。 在让用户使用这些数据之前,你需要询问服务器是否允许iPhone对数据进行encryption(更好的办法是服务器给iPhone提供解密数据的密钥,所以攻击者不会find它在代码中)。 如果服务器拒绝请求,应用程序将擦除所有存储的数据,然后完成。

这当然只适用于当你的应用程序被允许需要互联网连接(或至less一个连接到本地内部网,它可以与服务器通信)

我能想到满足这个要求的唯一方法就是设置远程通知,并在应用程序中通知处理程序触发敏感数据。 这不是最好的方法(我喜欢这个线程中的一些其他build议),但根据需求,Apple Remote Notifications似乎是唯一的方法。

我认为你应该扫描所有你想要在文件夹中擦除的数据,然后根据需要擦除它

我们可以删除存储在sqlite或文件夹中的项目,以获得一些通知。 但是这只有当你打开应用程序并获得通知时才可能。 我举一个例子:当应用程序打开时 ,用户会从本地服务器收到一些消息(可能是login或加载第一个屏幕)。 当你得到这个消息时,从你使用过的sqlite或者文件夹中删除数据。

但是,在上述情况下,需要打开应用程序。 如果您需要删除即使应用程序未启动的数据,也可能需要使用推送通知

你提到的网站边说的是抹去邮件和日历数据。

MobileMe服务可让您完全擦除手机,假设您启用了推送( 详细信息 )。

然后,如果有人“发现”了手机,并且足够聪明,可以在发出远程擦除命令之前禁用“推送”和Find My iPhone在设置中Find My iPhone ”,他们就可以逃脱你的数据。 吓走小偷电话就足够了,而不是那些跟踪你的数据的人。

一个应用程序可以删除自己的数据。 但它只能在活动(前景或背景)时才能这样做。 再次,这是一个时间问题,你告诉应用程序删除什么需要删除之前有人未经授权可以提取它。

将所有内容存储在文档文件夹中 然后使用此线程上的代码来删除所有内容

 NSFileManager *fileMgr = [[[NSFileManager alloc] init] autorelease]; NSError *error = nil; NSArray *directoryContents = [fileMgr contentsOfDirectoryAtPath:documentsDir error:&error]; if (error == nil) { for (NSString *path in directoryContents) { if([path isEqualToString:@"cache.db"]) { //dont delete db } else { NSString *myFilePath = [documentsDir stringByAppendingPathComponent:path]; //NSLog(myFilePath); BOOL removeSuccess = [fileMgr removeItemAtPath:myFilePath error:&error]; if (!removeSuccess) { //handle errors? NSLog(@"Not deleted: %@ %@", path, [error userInfo]); } } } } else { // Error handling //... } 

删除iPhone沙箱(文档文件夹)中的所有文件?