我发现了一种以下方法来检测移动配置是否已安装,但我目前还没有测试过。
目前没有直接的API可用于此。但是通过证书信任验证的方式可以实现这一点。
如果我们将自签名信任CA与移动配置文件附加并安装在设备上,我们可以通过检查由自签名根CA签名的叶子证书的信任级别来检查移动配置是否已安装。也就是说,如果应用程序中叶子证书的信任验证失败,则表示未安装移动配置文件;否则,已安装。
步骤:
创建一个自签名根CA,可以使用Certificate Assistant或在终端中使用openssl进行操作。
创建另一个证书并使用自签名根CA签名它
将在上一步骤中创建的已签名证书附加到Xcode
将自签名根CA作为移动配置文件的一部分附加
代码片段:
-(BOOL)IsMobileConfigInstalled {
NSString* certPath = [[NSBundle mainBundle] pathForResource:@"LeafCertificate" ofType:@"cer"];
NSData* certData = [NSData dataWithContentsOfFile:certPath];
SecCertificateRef cert = SecCertificateCreateWithData(NULL, (__bridge CFDataRef) certData);
SecPolicyRef policy = SecPolicyCreateBasicX509();
SecTrustRef trust;
OSStatus err = SecTrustCreateWithCertificates((__bridge CFArrayRef) [NSArray arrayWithObject:(__bridge id)cert], policy, &trust);
SecTrustResultType trustResult = -1;
err = SecTrustEvaluate(trust, &trustResult);
CFRelease(trust);
CFRelease(policy);
CFRelease(cert);
if(trustResult == kSecTrustResultUnspecified)
return YES;
else
return NO;
}
参考资料:
这是一个苹果开发者论坛上针对该主题的技术讨论链接。
这是一篇博客文章,按步骤为您解释了此过程。 链接。