可以从Appstore安装应用程序,也可以通过Enterprise分发安装。我基本上想要实现的是,如果从appstore下载app,我将启用/禁用某些功能。否则,应用程序是从MobileIRON的appstore安装的,作为MDM供应商,我将启用/禁用某些功能。将上传到商店的应用程序二进制文件将是相同的。 那么,如果从Appstore或MDM商店安装Application,我怎么能以编程方式区别?
检查过很多相关问题,但没有一个能够正确回答这个问题。从应用程序包中读取embedded.mobileprovision文件是否足够,或者是否有其他方法来检测安装源。
编辑:基于回复,无论如何我在构建期间可以在某处放置一些值,以便稍后我可以根据安装源提取该值吗?如果有人能提供一些想法,将非常感激。答案 0 :(得分:1)
而不是尝试确定您尝试定位的“商店”,而是为您的应用创建新目标(例如,您可以将此名称命名为“我的应用企业版”)。
然后,在构建设置 - >中创建一个条目其他C标志:
-DTARGET_ENTERPRISE = 1 //标志“-D”在“TARGET_ENTERPRISE”之前,1 = TRUE
- (void)someRoutine
{
#ifdef TARGET_ENTERPRISE
// Do something or show something specifically for Enterprise apps
#else
// Do something or show something specifically for App Store apps
#endif
}
请注意,这需要您提供2个版本(AdHoc / Release和Enterprise)。
答案 1 :(得分:0)
Apple已经在iOS 7中引入了所谓的“托管应用程序配置”。
https://developer.apple.com/library/ios/samplecode/sc2279/Introduction/Intro.html
这允许MDM系统通过MDM将NSDictionary值部署到NSUserDefaults中的保留命名空间中。如果您的应用在其中找到值,则可以访问您在MDM中的命名空间。
从那时起,我们就在App Store应用程序中使用它。不需要有两个二进制文件。