[英]Check if a mobileconfig profile is installed on iOS
在iPhone桌面上安裝mobileconfig文件( 在iPhone上以編程方式安裝配置文件 )。
在iPhone Settings->General->provision file
,我可以找到列表。
我遇到了以下方法來確定是否安裝了移動配置 ,但到目前為止我還沒有測試過。
沒有可用的直接API。但是有一種解決方法可以通過證書信任驗證來實現。
如果我們使用移動配置附加自簽名信任ca並將其安裝在設備上,我們可以通過檢查由自簽名根ca簽名的葉證書的信任級別來檢查是否安裝了移動配置。也就是說,如果應用程序中葉證書的信任驗證失敗,則表示未安裝或未安裝移動配置
腳步:
創建自簽名根CA您可以使用證書助理或終端中的openssl來完成。
創建另一個證書 ,並得到其簽名使用自簽名根CA
將上一步中創建的簽名證書附加到xcode
將自簽名根CA附加為Mobile Config的一部分
代碼片段:
-(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;
}
參考文獻:
以下是蘋果開發人員論壇中圍繞該主題的技術討論的鏈接
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.