检查iOS上是否安装了mobileconfig配置文件

时间:2014-12-20 12:50:37

标签: ios iphone ipad

通过安装mobileconfig文件 (Installing a configuration profile on iPhone - programmatically)在iPhone桌面上。

如何检查是否已安装此配置文件?

在iPhone Settings->General->provision file中,我可以找到该列表。

1 个答案:

答案 0 :(得分:8)

如果安装了移动配置,我遇到了以下识别的方法,但到目前为止我还没有测试过。

  

没有可用于执行此操作的直接API。但是有一种解决方法   通过证书信任验证来实现这一目标。

     

如果我们使用移动配置附加自签名信任ca并安装   它在设备上我们可以检查是否安装了移动配置   检查由签名的叶证书的信任级别   自签名root ca.也就是说,如果应用程序中叶证书的信任验证失败,则意味着未安装或未安装移动配置

<强>步骤:

  • 创建自签名根CA ,您可以使用终端中的证书助理 openssl 来执行此操作。

  • 创建其他证书并使用自签名根CA

  • 获取签名
  • 将上一步创建的签名证书附加到xcode

  • 自签名根CA 作为移动配置

    的一部分附加
    • 在IPCU中打开您的移动配置

    • 向下滚动到凭据

    • 按右侧的配置

    • 选择自签名根CA (确保其格式为.cer格式)

      iPCU

    • 立即导出移动配置并使用全球可信CA (如GoDaddy)对其进行签名。此步骤是可选的,如果完成,设备将显示移动配置如已验证,或者在安装移动配置时它将显示为未验证

代码段:

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

<强>参考文献:

以下是关于苹果开发人员论坛

主题的技术讨论的link

以下是博客文章的link,它会逐步引导您。

以下是有关此主题Ref1Ref22

的堆栈溢出讨论的链接