无法检查iPhone上是否存在configuration文件

我想检查一下configuration文件是否存在于iPhone上,我find了下面的教程: http : //alex.tapmania.org/2011/09/check_conf_prof_is_installed_ios.html

这对我来说,转换成以下代码:

NSString * certPath = [[NSBundle mainBundle] pathForResource:@"certificate" ofType:@"mobileconfig"]; SecTrustRef trust; NSData * certData = [NSData dataWithContentsOfFile:certPath]; SecCertificateRef cert = SecCertificateCreateWithData(NULL, (__bridge CFDataRef) certData); SecPolicyRef policy = SecPolicyCreateBasicX509(); OSStatus err = SecTrustCreateWithCertificates((__bridge CFArrayRef) [NSArray arrayWithObject:(__bridge id)cert],policy, &trust); SecTrustResultType trustResult = -1; err = SecTrustEvaluate(trust, &trustResult); if (trustResult ==4) { label.text=@"Profile installed"; } else{ label.text=@"Profile not installed"; } 

该应用程序崩溃的行:

 OSStatus err = SecTrustCreateWithCertificates((__bridge CFArrayRef) [NSArray arrayWithObject:(__bridge id)cert],policy, &trust); 

我也注意到,在这个阶段, cert没有任何内存分配。

哪里不对? 这是正确的程序? 如果没有,是否有另一个更有益的教程?

谢谢!

我不确定你为什么要通过代码来做到这一点。 有Mac OSx应用程序已经为你做这个。 如果你打算做的事情不需要涉及代码,你可以从这个Apple链接下载这个叫做iPhone Configuration Utility的 Mac应用程序 。 有许多function,包括安装在iPhone上的configuration/查看/等configuration文件。

我最近解决了你遇到的同样的问题。 您发布的代码和链接build议确实可以用来检查configuration文件的存在。 你打的绊脚石无疑是证书的问题。

我使用ShiningLight为win32创build了一对使用openSSL for win32的证书。 完整的指导如何做到这一点可以在这里find: http : //www.dylanbeattie.net/docs/openssl_iis_ssl_howto.html

但请注意,有几个问题:

  1. 在创build根证书时,必须将configuration文件中的basicconstraints = CA设置设置为TRUE(其他证书需要FALSE)。

  2. 为了IO能够读取它们,必须使用DER编码这两个证书。 要使用openssl执行此操作,需要运行类似于两个证书上的openssl x509 -in certs / cert.cer -out certs / certDER.cer -outform DER的命令 。 我强烈怀疑这是错误的编码是崩溃您的代码。