如何检测应用是从app store还是从MDM商店安装?

应用程序可以从Appstore安装,也可以通过Enterprise分发安装。 我基本上要实现的是,如果从appstore下载应用程序,我将启用/禁用某些function。 否则,如果从应用程序安装,MobileIRON的应用程序,作为一个MDM供应商,我将启用/禁用某些function。 将被上传到商店的应用程序二进制文件将是相同的。 那么,如果应用程序是从Appstore或从MDM存储安装的,我怎样才能以编程方式不同呢?

已经检查了很多相关的问题,但是没有一个真正地回答这个问题 从应用程序包中读取embedded.mobileprovision文件是否足够,或者是否有任何其他方式来检测安装源。

编辑:根据答复,无论如何,我可以在构build过程中的某个地方放置一些价值,以便以后我可以提取基于安装源的价值? 如果有人能提供一些想法,将非常感激。

而不是试图确定你试图定位哪个“商店”,为你的应用程序创build一个新的目标(例如,你可以命名这个“我的应用程序企业”)。

在这里输入图像说明

然后,在“ 生成设置” – >“ 其他C标志 ”中创build一个条目:

-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)。

苹果已经在iOS 7中引入了所谓的“托pipe应用程序configuration”。

https://developer.apple.com/library/ios/samplecode/sc2279/Introduction/Intro.html

这允许MDM系统通过MDM将NSDictionary值部署到NSUserDefaults中的保留名称空间中。 如果您的应用程序在其中find值,则可以访问您在MDM中的名称空间。

从那以后,我们就把它用于我们的App Store应用程序。 不需要有两个二进制文件。