And*_*res 6 cocoa hex objective-c nsdata provisioning-profile
所以,我正在尝试打开一个.mobileprovisioning配置文件来读取内部的内容......这就是我正在做的事情:
NSString *path = [pathURL path];
NSData *data = [[NSFileManager defaultManager] contentsAtPath:path];
Run Code Online (Sandbox Code Playgroud)
当然我得到了数据读取,但我找不到将这些数据变成有用的东西...... NSDictionary,NSString或者其他......
我已经尝试过了:
NSString *newStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
Run Code Online (Sandbox Code Playgroud)
任何的想法?我确定这是一个编码问题,但我在阅读和谷歌搜索一段时间后无法解决它...我认为配置文件保存为十六进制,但我不知道如何从目标中读取 - C.我找到了这个,但没有一个有用的答案.
谢谢!
以下方法应该做你想要的.正如@rbrockerhoff所说,移动配置文件是一种编码的CMS消息.该方法使用解码器首先使用CMS功能解码数据,然后从解码的数据创建plist字符串/内容.然后可以将此字符串转换为从该方法返回的字典.该词典将包含移动配置文件中的所有详细信息.
- (NSDictionary *)provisioningProfileAtPath:(NSString *)path {
CMSDecoderRef decoder = NULL;
CFDataRef dataRef = NULL;
NSString *plistString = nil;
NSDictionary *plist = nil;
@try {
CMSDecoderCreate(&decoder);
NSData *fileData = [NSData dataWithContentsOfFile:path];
CMSDecoderUpdateMessage(decoder, fileData.bytes, fileData.length);
CMSDecoderFinalizeMessage(decoder);
CMSDecoderCopyContent(decoder, &dataRef);
plistString = [[NSString alloc] initWithData:(__bridge NSData *)dataRef encoding:NSUTF8StringEncoding];
NSData *plistData = [plistString dataUsingEncoding:NSUTF8StringEncoding];
plist = [NSPropertyListSerialization propertyListWithData:plistData options:NSPropertyListImmutable format:nil error:nil]
}
@catch (NSException *exception) {
NSLog(@"Could not decode file.\n");
}
@finally {
if (decoder) CFRelease(decoder);
if (dataRef) CFRelease(dataRef);
}
return plist;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1013 次 |
最近记录: |