No se puede verificar si existe un perfil de configuration en el iPhone.

Estoy tratando de verificar si existe un perfil de configuration en el iPhone, encontré el siguiente tutorial sobre cómo hacerlo: http://alex.tapmania.org/2011/09/check_conf_prof_is_installed_ios.html

que, para mí, se traduce en el siguiente código:

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"; } 

la aplicación se bloquea en la línea:

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

También noté que en esta etapa, cert no tiene memory asignada.

¿Qué está mal? ¿Es este el procedimiento correcto? si no, ¿hay otro tutorial que sea más beneficioso?

¡Gracias!

No estoy seguro de por qué querrías hacer esto a través del código. Hay aplicaciones Mac OSx que ya lo hacen por usted. Si lo que pretende hacer no tiene que implicar un código, puede download esta aplicación de Mac llamada Utilidad de configuration de iPhone de este enlace de Apple . Tiene muchas funciones, incluida la configuration / vista / etc de perfiles instalados en un iPhone.

Recientemente he resuelto el mismo problema que tienes. El código que ha publicado y el consejo de su enlace pueden de hecho utilizarse para verificar la existencia de un perfil de configuration. El inconveniente que ha golpeado es, sin duda, un problema con su certificate.

Creé mi par de certificates usando openSSL para win32 by ShiningLight. Las instrucciones completas sobre cómo hacerlo se pueden encontrar aquí: http://www.dylanbeattie.net/docs/openssl_iis_ssl_howto.html

Tenga en count, sin embargo, que hay un par de gotchas:

  1. al crear su certificate raíz, la configuration basicconstraints = CA en el file de configuration debe establecerse en TRUE (se necesita FALSE para el otro certificate).

  2. Para que los IO puedan leerlos, ambos certificates deben codificarse usando DER. Para hacer esto usando openssl, debe ejecutar un command similar a openssl x509 -in certs / cert.cer -out certs / certDER.cer -outform DER en ambos certificates. Sospecho que es una encoding incorrecta que bloquea su código.