我有一个ios SDK,它在后台模式下运行时同步用户的默认设置。问题是SDK被应用程序在启用数据保护的情况下使用,每当应用程序进入后台,我们的SDK就会继续扫描信标区域。
每当设备进入信标区域时,我从服务器获取附加到该信标的通知,并将其显示为本地警报通知。在此过程中,我尝试将一些数据同步到用户默认值,如果设备在此时使用密码锁定,ios将引发崩溃:
*:错误创建文件/private/var/mobile/Containers/Data/Application/079820BD-EBFC-4C49-9C39-9A893A27358E/Library/Preferences/domainName.plist.gn1cmrC: 1: task_set_exception_ports(B07,400,D03,0,0)失败,错误(4:(os/kern)无效参数)*
通过使用nsuser缺省值作为存储方法来解决此错误的任何帮助都将非常有用。如果没有办法,那么请建议数据存储,这是可用的数据保护是启用的应用程序和设备是密码锁定。
请注意,当设备未使用密码锁定时,没有出现错误。
发布于 2014-12-13 04:09:55
当应用程序进入监视区域,醒来并处于后台模式时,当位置管理器触发该区域的退出事件,然后将权限放回时,就可以通过重置文件权限来找到这方面的工作。这样做的代码..。
当设备被密码锁定时,App进入区域,降低写入文件的权限。
NSFileManager* currnetPath=[[NSFileManager alloc]init];
NSArray *directories = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
NSString *documents = [directories firstObject];
NSString* prefPath = [documents stringByAppendingPathComponent:@"Preferences"];
NSDictionary *setNewDict = @{ NSFileProtectionKey: NSFileProtectionNone };
[currnetPath setAttributes:setNewDict ofItemAtPath:prefPath error:nil];当app退出时,该区域启用最高的数据保护模式。
NSFileManager* currnetPath=[[NSFileManager alloc]init];
NSArray *directories = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
NSString *documents = [directories firstObject];
NSString* prefPath = [documents stringByAppendingPathComponent:@"Preferences"];
NSDictionary *setNewDict = @{ NSFileProtectionKey: NSFileProtectionComplete };
[currnetPath setAttributes:setNewDict ofItemAtPath:prefPath error:nil];
NSDictionary *newDict=[currnetPath attributesOfItemAtPath:prefPath error:nil];https://stackoverflow.com/questions/27446235
复制相似问题