

<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>MDM &#8211; Max的程式語言筆記</title>
	<atom:link href="https://stackoverflow.max-everyday.com/tag/mdm/feed/" rel="self" type="application/rss+xml" />
	<link>https://stackoverflow.max-everyday.com</link>
	<description>我要當一個豬頭，快樂過每一天</description>
	<lastBuildDate>Thu, 29 Mar 2018 10:28:00 +0000</lastBuildDate>
	<language>zh-TW</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.1</generator>

<image>
	<url>https://stackoverflow.max-everyday.com/wp-content/uploads/2017/02/max-stackoverflow-256.png</url>
	<title>MDM &#8211; Max的程式語言筆記</title>
	<link>https://stackoverflow.max-everyday.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>[iOS] install / uninstall app on device through MDM server?</title>
		<link>https://stackoverflow.max-everyday.com/2018/03/ios-install-uninstall-app-on-device-through-mdm-server/</link>
					<comments>https://stackoverflow.max-everyday.com/2018/03/ios-install-uninstall-app-on-device-through-mdm-server/#respond</comments>
		
		<dc:creator><![CDATA[max-stackoverflow]]></dc:creator>
		<pubDate>Thu, 29 Mar 2018 10:24:27 +0000</pubDate>
				<category><![CDATA[iOS筆記]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[MDM]]></category>
		<guid isPermaLink="false">http://stackoverflow.max-everyday.com/?p=2192</guid>

					<description><![CDATA[使用下列的範例就可以安裝自家(in-house)...]]></description>
										<content:encoded><![CDATA[<p>使用下列的範例就可以安裝自家(in-house) 和 app store 上的 app了。</p>
<pre class="default prettyprint prettyprinted"><code><span class="pun">&lt;?</span><span class="pln">xml version</span><span class="pun">=</span><span class="str">"1.0"</span><span class="pln"> encoding</span><span class="pun">=</span><span class="str">"UTF-8"</span><span class="pun">?&gt;</span>
<span class="dec">&lt;!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN""http://www.apple.com/DTDs/PropertyList-1.0.dtd"&gt;</span>
<span class="tag">&lt;plist</span> <span class="atn">version</span><span class="pun">=</span><span class="atv">"1.0"</span><span class="tag">&gt;</span>
     <span class="tag">&lt;dict&gt;</span>
          <span class="tag">&lt;key&gt;</span><span class="pln">CommandUUID</span><span class="tag">&lt;/key&gt;</span>
          <span class="tag">&lt;string&gt;</span><span class="pln">4424F929-BDD2-4D44-B518-393C0DABD56A</span><span class="tag">&lt;/string&gt;</span>
          <span class="tag">&lt;key&gt;</span><span class="pln">Command</span><span class="tag">&lt;/key&gt;</span>
               <span class="tag">&lt;dict&gt;</span>
                    <span class="tag">&lt;key&gt;</span><span class="pln">RequestType</span><span class="tag">&lt;/key&gt;</span>
                    <span class="tag">&lt;string&gt;</span><span class="pln">InstallApplication</span><span class="tag">&lt;/string&gt;</span>
                    <span class="tag">&lt;key&gt;</span><span class="pln">iTunesStoreID</span><span class="tag">&lt;/key&gt;</span>
                    <span class="tag">&lt;integer&gt;</span><span class="pln">464656389</span><span class="tag">&lt;/integer&gt;</span>
                    <span class="tag">&lt;key&gt;</span><span class="pln">ManagementFlags</span><span class="tag">&lt;/key&gt;</span>
                    <span class="tag">&lt;integer&gt;</span><span class="pln">4</span><span class="tag">&lt;/integer&gt;</span>
               <span class="tag">&lt;/dict&gt;</span>
     <span class="tag">&lt;/dict&gt;</span>
<span class="tag">&lt;/plist&gt;</span></code></pre>
<p>Here is example of RemoveApplication</p>
<pre class="default prettyprint prettyprinted"><code><span class="pun">&lt;?</span><span class="pln">xml version</span><span class="pun">=</span><span class="str">"1.0"</span><span class="pln"> encoding</span><span class="pun">=</span><span class="str">"UTF-8"</span><span class="pun">?&gt;</span>
<span class="dec">&lt;!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN""http://www.apple.com/DTDs/PropertyList-1.0.dtd"&gt;</span>
<span class="tag">&lt;plist</span> <span class="atn">version</span><span class="pun">=</span><span class="atv">"1.0"</span><span class="tag">&gt;</span>
     <span class="tag">&lt;dict&gt;</span>
          <span class="tag">&lt;key&gt;</span><span class="pln">CommandUUID</span><span class="tag">&lt;/key&gt;</span>
          <span class="tag">&lt;string&gt;</span><span class="pln">4424F929-BDD2-4D44-B518-393C0DABD56A</span><span class="tag">&lt;/string&gt;</span>
          <span class="tag">&lt;key&gt;</span><span class="pln">Command</span><span class="tag">&lt;/key&gt;</span>
               <span class="tag">&lt;dict&gt;</span>
                    <span class="tag">&lt;key&gt;</span><span class="pln">RequestType</span><span class="tag">&lt;/key&gt;</span>
                    <span class="tag">&lt;string&gt;</span><span class="pln">RemoveApplication</span><span class="tag">&lt;/string&gt;</span>
                    <span class="tag">&lt;key&gt;</span><span class="pln">Identifier</span><span class="tag">&lt;/key&gt;</span>
                    <span class="tag">&lt;string&gt;</span><span class="pln">com.test.test</span><span class="tag">&lt;/string&gt;</span>
               <span class="tag">&lt;/dict&gt;</span>
     <span class="tag">&lt;/dict&gt;</span>
<span class="tag">&lt;/plist&gt;</span></code></pre>
<p>There is no functionality to whitelist and blacklist apps. However, you can query device for list of application and if you see some blacklisted application you can do some actions.</p>
<hr />
<p>說明：上面的範例是如何去下載 Apple App Store 上的 App.</p>
<p>&nbsp;</p>
<h4>相關文章：</h4>
<p>[iOS] get MDM settings from system dictionary in swift<br />
<a href="https://stackoverflow.max-everyday.com/2018/01/ios-get-mdm-settings-from-system-dictionary-in-swift/">https://stackoverflow.max-everyday.com/2018/01/ios-get-mdm-settings-from-system-dictionary-in-swift/</a></p>
<p>MDM推送設定值到 iOS device<br />
<a href="https://stackoverflow.max-everyday.com/2017/09/mdm-settings-ios-device/">https://stackoverflow.max-everyday.com/2017/09/mdm-settings-ios-device/</a></p>
<p>MDM推送App到 iOS device<br />
<a href="https://stackoverflow.max-everyday.com/2017/09/mdm-install-app/">https://stackoverflow.max-everyday.com/2017/09/mdm-install-app/</a></p>
<p>Sample iOS 行動裝置管理伺服器(MDM server)<br />
<a href="https://stackoverflow.max-everyday.com/2017/09/ios-mdm-server/">https://stackoverflow.max-everyday.com/2017/09/ios-mdm-server/</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://stackoverflow.max-everyday.com/2018/03/ios-install-uninstall-app-on-device-through-mdm-server/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>[iOS] get MDM settings from system dictionary in swift</title>
		<link>https://stackoverflow.max-everyday.com/2018/01/ios-get-mdm-settings-from-system-dictionary-in-swift/</link>
					<comments>https://stackoverflow.max-everyday.com/2018/01/ios-get-mdm-settings-from-system-dictionary-in-swift/#respond</comments>
		
		<dc:creator><![CDATA[max-stackoverflow]]></dc:creator>
		<pubDate>Wed, 24 Jan 2018 06:45:24 +0000</pubDate>
				<category><![CDATA[iOS筆記]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[MDM]]></category>
		<category><![CDATA[Swift]]></category>
		<guid isPermaLink="false">http://stackoverflow.max-everyday.com/?p=1965</guid>

					<description><![CDATA[透過 iOS MDM 派送參數給 Device，...]]></description>
										<content:encoded><![CDATA[<p>透過 iOS MDM 派送參數給 Device，範例程式如下：</p>
<h3>Develop an app that supports Managed AppConfig on iOS</h3>
<p><strong>Fetch managed AppConfig using the following code:</strong></p>
<pre>func fetchAppConfiguration() {
     if let managedConfigDict = UserDefaults.standard.dictionary(forKey: "com.apple.configuration.managed"){
          if let keyValue = managedConfigDict["keyName"]{
               print("KEY : keyname \nVALUE : \(keyValue) ")
          }
     }else{
          print("Error fetching app config values. Please make sure your device is enrolled with AirWatch ")
     }
}</pre>
<p><strong> </strong></p>
<p><strong>Register your app to listen for managed AppConfig changes:</strong></p>
<p>Developers can register their app to listen for userdefault changes. This action allows the app to dynamically pick up the latest managed AppConfig sent by AirWatch.</p>
<pre>func registerForAppConfigNotification() {
     NotificationCenter.default.addObserver(self, selector: #selector(ViewController.fetchAppConfiguration), 
          name: UserDefaults.didChangeNotification, object: nil)
}</pre>
<hr />
<p>詳全文：</p>
<p><a href="https://support.air-watch.com/articles/115006426588-AirWatch-Managed-AppConfig-Sample-iOS">https://support.air-watch.com/articles/115006426588-AirWatch-Managed-AppConfig-Sample-iOS</a></p>
<p>&nbsp;</p>
<h4>相關文章：</h4>
<p>Configure Managed Settings for iOS Devices<br />
<a href="https://my.air-watch.com/help/9.2/en/Content/Platform_Guides/iOS/T/ManagingiOSManagedSttngs.htm">https://my.air-watch.com/help/9.2/en/Content/Platform_Guides/iOS/T/ManagingiOSManagedSttngs.htm</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://stackoverflow.max-everyday.com/2018/01/ios-get-mdm-settings-from-system-dictionary-in-swift/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>2017 MDM 的相關產品</title>
		<link>https://stackoverflow.max-everyday.com/2017/12/2017-mobile-device-management-solutions/</link>
					<comments>https://stackoverflow.max-everyday.com/2017/12/2017-mobile-device-management-solutions/#respond</comments>
		
		<dc:creator><![CDATA[max-stackoverflow]]></dc:creator>
		<pubDate>Fri, 15 Dec 2017 08:48:14 +0000</pubDate>
				<category><![CDATA[電腦相關應用]]></category>
		<category><![CDATA[MDM]]></category>
		<guid isPermaLink="false">http://stackoverflow.max-everyday.com/?p=1721</guid>

					<description><![CDATA[As the rise of BYOD (Bri...]]></description>
										<content:encoded><![CDATA[<p>As the rise of BYOD (Bring Your Own Device) has become an unstoppable force across the business landscape, managing what can be a host of mobile devices is now a critical consideration for every enterprise.</p>
<p><b>自攜電子設備</b>（BYOD, Bring Your Own Device）亦稱自攜技術（BYOT, Bring Your Own Technology）、自攜電話（BYOP, Bring Your Own Phone）或自攜電腦（BYOPC, Bring Your Own PC）是一種允許員工使用個人行動裝置進入他們工作區域並用以處理公司資訊與應用程式的作業方式<sup id="cite_ref-1" class="reference"><a href="https://zh.wikipedia.org/wiki/%E8%87%AA%E6%94%9C%E8%A8%AD%E5%82%99#cite_note-1">[1]</a></sup>。學生帶著他們自己的裝置上課的運作方式也是相同道理<sup id="cite_ref-2" class="reference"><a href="https://zh.wikipedia.org/wiki/%E8%87%AA%E6%94%9C%E8%A8%AD%E5%82%99#cite_note-2">[2]</a></sup>。</p>
<p>With an expanding fleet of mobile devices, businesses need a platform that enables high levels of oversight and solid data protection. An MDM (Mobile Device Management) system is now vital.</p>
<p>市場上的產品有：</p>
<p><img fetchpriority="high" decoding="async" class="alignnone size-full wp-image-1726" src="https://stackoverflow.max-everyday.com/wp-content/uploads/2017/12/airwatch-mdm-by-vmware-review.jpg" alt="" width="785" height="450" srcset="https://stackoverflow.max-everyday.com/wp-content/uploads/2017/12/airwatch-mdm-by-vmware-review.jpg 785w, https://stackoverflow.max-everyday.com/wp-content/uploads/2017/12/airwatch-mdm-by-vmware-review-600x344.jpg 600w, https://stackoverflow.max-everyday.com/wp-content/uploads/2017/12/airwatch-mdm-by-vmware-review-768x440.jpg 768w" sizes="(max-width: 785px) 100vw, 785px" /></p>
<p>&nbsp;</p>
<h4>1. VMware AirWatch</h4>
<p><a href="https://www.air-watch.com/solutions/mobile-device-management/">https://www.air-watch.com/solutions/mobile-device-management/</a></p>
<p>&nbsp;</p>
<blockquote><p>Add new devices quickly and easily provision with apps and policies without IT involvement.</p></blockquote>
<ul>
<li>
<blockquote><p>Configure devices during initial power on with bulk provisioning programs such as the Apple Device Enrollment Program (DEP) and Windows Out-of-Box Enrollment (OOBE)</p></blockquote>
</li>
<li>
<blockquote><p>Deploy public, internal or bulk-purchased apps to devices automatically or to an enterprise app catalog for on-demand install</p></blockquote>
</li>
<li>
<blockquote><p>Enable users to self-activate devices by entering their corporate credentials in a simple MDM onboarding workflow</p></blockquote>
</li>
<li>
<blockquote><p>Connect to enterprise email, VPN, Wi-Fi, content, intranet sites and other backend resources</p></blockquote>
</li>
<li>
<blockquote><p>Configure MDM policies for device restrictions, layout, settings access, notifications and more and assign based on OS or ownership type (BYO or corporate-owned)</p></blockquote>
</li>
</ul>
<hr />
<h4>2. BlackBerry UEM</h4>
<p><a href="https://uk.blackberry.com/enterprise/unified-endpoint-management">https://uk.blackberry.com/enterprise/unified-endpoint-management</a></p>
<p>除了黑莓機之外，好像也支援其他平台。</p>
<blockquote><p>Smartphones<br />
iOS<br />
Provide comprehensive secure productivity and enterprise mobility management for iOS, including day one support for the latest iOS releases, with the BlackBerry Enterprise Mobility Suite. Use a layered security model and ease support for the wide range of iOS platforms through mobile MDM, MAM and MCM. With iOS support that spans the entire suite of BlackBerry applications, a wide range of leading third party ISV applications and heightened security for native iOS applications you can empower employees with mobile productivity. You’ll also be able to support Microsoft Exchange on-premise and cloud-based environments with Exchange Online through Office® 365<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2122.png" alt="™" class="wp-smiley" style="height: 1em; max-height: 1em;" />.</p>
<p>Android<br />
Provide comprehensive secure productivity and enterprise mobility management for Android with the BlackBerry Enterprise Mobility Suite. Use a layered security model and ease support for the wide range of Android platforms through mobile device management (MDM), mobile application management (MAM) and mobile content management (MCM).</p>
<p>With Android support that spans the entire suite of BlackBerry applications, a wide range of leading third party ISV applications and comprehensive support for Samsung KNOX Workspace and Android for enterprise you can empower employees with mobile productivity. You’ll also be able to support Microsoft Exchange on-premise and cloud-based environments with Exchange Online through Office 365.</p>
<p>Windows Phone<br />
Provide comprehensive secure productivity and enterprise mobility management for Windows Phone. With the BlackBerry Enterprise Mobility Suite, operations teams can set both MDM and app-specific policies on Windows Phone devices, while users can utilize business-grade secure email and other apps built on the BlackBerry Dynamics Platform.</p>
<p>BlackBerry<br />
Utilize the gold standard for managing BlackBerry® 10 devices. BlackBerry® UEM, a key component of the BlackBerry Enterprise Mobility Suite, manages a wide array of devices and policies from a unified console. BlackBerry devices can be managed from the same solution used for iOS, Android, Windows, macOS and more.</p></blockquote>
<hr />
<h4>3. IBM MaaS360</h4>
<p><a href="https://www.ibm.com/tw-zh/marketplace/unified-endpoint-management">https://www.ibm.com/tw-zh/marketplace/unified-endpoint-management</a></p>
<blockquote><p>統一端點管理 (UEM) 保證讓 IT 能夠透過單一管理主控台，綜合管理智慧型手機、平板電腦、筆記型電腦及物聯網裝置。不過，您需要地球上最智慧的端點保護平台，來提高作業效率、提供最大的資料安全，與實現您的數位轉換目標。IBM MaaS360 with Watson<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2122.png" alt="™" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 提供認知洞察、脈絡分析、雲端評比功能，以便弄清楚您每天遇到的行動詳情，同時透過單一平台保護您的端點、使用者、應用程式、文件及其中資料。</p></blockquote>
<hr />
<h4>4. MobileIron</h4>
<p><a href="https://www.mobileiron.com/cn/products">https://www.mobileiron.com/cn/products</a></p>
<blockquote><p>MobileIron’s mobile device management (MDM) capabilities give you the fundamental visibility and IT controls needed to secure, manage, and monitor any corporate­ or employee­owned mobile device or desktop that accesses business critical data.</p>
<p>MobileIron 企業移動 IT 解決方案，幫助企業管理智能移動終端、移動文檔、移動應用、及移動網頁門戶的全面安全。目前全球有5000多家企業客戶都選擇MobileIron 的移動優先解決方案作為其移動戰略的基礎架構。 MobileIron 幫助企業IT 部門構建了移動化的管理壁壘，既保護了企業員工的智能手機和平板電腦的使用安全，同時保持移動操作系統本身移動化的優秀用戶體驗，更重要的我們為企業最重要的業務數據和移動應用知識產權提供了全面的管理和安全加固。</p>
<p>無論您正在尋找員工自備設備在企業環境辦公的BYOD 解決方案，還是準備將企業現有的網絡架構重組成移動優先的全面移動化IT 解決方案，我們可為您提供不同組合的移動終端高級管理服務，涵蓋智能移動終端、移動文檔、移動應用、及移動網頁門戶的全面管理及安全服務。</p>
<p>MobileIron 企業移動 IT 解決方案，既可本地部署在您企業的內部網絡，也可作為雲服務部署在運營商側的雲平台。</p></blockquote>
<hr />
<h4>5. Citrix XenMobile</h4>
<p><a href="https://www.citrix.com/products/xenmobile/">https://www.citrix.com/products/xenmobile/</a></p>
<blockquote><p>Deploy Citrix XenMobile in as little as two hours and get full access to mobile device management (MDM), mobile application management (MAM), mobile content management (MCM), secure network gateway, and enterprise-grade mobile productivity apps in one comprehensive enterprise mobility management solution. XenMobile enhances the user experience on BYO or corporate devices, without compromising security. Let Citrix and our partners help you manage your XenMobile environment.</p></blockquote>
<p>Citrix 的比較表：</p>
<blockquote><p>Side-by-side MDM vendor review<br />
XenMobile vs. AirWatch, MobileIron, Good, and MaaS360</p>
<p>Factors such as new devices, more apps, and evolving use cases can make evaluating vendors and selecting a product to meet your MDM, MAM, and data management needs a challenging task. Only XenMobile provides a comprehensive enterprise mobility management solution that offers a complete set of mobile productivity apps to enhance the user experience without compromising security. To learn more about how XenMobile outperforms AirWatch, MobileIron, Good, and other MDM vendors, review this side-by-side feature comparison.</p></blockquote>
<p>&nbsp;</p>
<div class="aem-GridColumn aem-GridColumn--default--12 layout-tool">
<div class="evg-select ctx-columns col-count-1 center default top no-bg-img bg-color ">
<div class="bg">
<div class="content">
<div class="row ">
<div>
<div class=" columns large-12 ">
<div>
<div class="column-15220-par responsivegrid">
<div class="aem-Grid aem-Grid--12">
<div class="aem-GridColumn aem-GridColumn--default--12 text">
<div class="ctx-text ">
<p>&nbsp;</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<p><img decoding="async" class="alignnone size-full wp-image-1735" src="https://stackoverflow.max-everyday.com/wp-content/uploads/2017/12/Screenshot-2017-12-19-11.04.58.jpg" alt="" width="745" height="805" srcset="https://stackoverflow.max-everyday.com/wp-content/uploads/2017/12/Screenshot-2017-12-19-11.04.58.jpg 745w, https://stackoverflow.max-everyday.com/wp-content/uploads/2017/12/Screenshot-2017-12-19-11.04.58-555x600.jpg 555w" sizes="(max-width: 745px) 100vw, 745px" /></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div class="aem-GridColumn aem-GridColumn--default--12 layout-tool">
<div class="evg-select ctx-columns col-count-1 center default drop-padding top no-bg-img bg-color ">
<div class="bg">
<div class="content">
<div class="row ">
<div>
<div class=" columns large-12 ">
<div>
<div class="column-15220-par responsivegrid">
<div class="aem-Grid aem-Grid--12">
<p>&nbsp;</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<hr />
<h4>6. SAP Afaria</h4>
<p><a href="https://www.sap.com/uk/products/secure-mobile-device-management-cloud.html">https://www.sap.com/uk/products/secure-mobile-device-management-cloud.html</a></p>
<blockquote><p>Move beyond mobile device management (MDM) with SAP Mobile Secure – EMM in the cloud<br />
Protect and manage your company’s mobile devices and apps – with SAP Mobile Secure. This cloud-based EMM portfolio offers integrated tools for mobile device management (MDM), bring your own device (BYOD) security, mobile application management (MAM), and more. Manage mobile device security from one SaaS platform – and even set up your own enterprise app store.</p>
<ul class="banner-button linksHolder">
<li><a class="link" href="https://www.youtube.com/watch?v=wbcQqUwbeyA&amp;index=3&amp;list=PLC63F6EBBAB33BBEF" target="_blank" rel="noopener" data-engagement-tracking-analytics="heroCTA:Videos: Get started with SAP Mobile Secure">Videos: Get started with SAP Mobile Secure</a></li>
</ul>
</blockquote>
<hr />
<h4>7. Mobile Device Manager Plus</h4>
<p><a href="https://www.manageengine.com/mobile-device-management/">https://www.manageengine.com/mobile-device-management/</a></p>
<blockquote><p>Empower your workforce with the power of mobility<br />
ManageEngine Mobile Device Manager Plus is an enterprise mobile device management solution that is designed to enhance employee productivity without compromising on corporate security.</p>
<p>360° support for enterprise mobility</p>
<ul>
<li><strong>Quickly bring devices under management</strong><br />
Easy enrollment and authentication for BYOD and corporate devices.</li>
<li><strong>Intuitive dashboard with an easy to use interface<br />
</strong>Management has never been simpler with an overview of the entire device ecosystem in your organization.</li>
<li><strong>Ensure devices are compliant with policies<br />
</strong>Configures profiles to enact policies for Wi-Fi, VPN and other parameters.</li>
<li><strong>Troubleshoot devices in real time<br />
</strong>Remotely control and view mobile devices and troubleshoot issues on them.</li>
</ul>
</blockquote>
<hr />
<h4>8. Microsoft Intune</h4>
<p><a href="https://www.microsoft.com/en-gb/cloud-platform/microsoft-intune">https://www.microsoft.com/en-gb/cloud-platform/microsoft-intune</a></p>
<blockquote><p>Enable secure mobile productivity<br />
Define a mobile management strategy that fits the needs of your organisation. Apply flexible mobile device and app management controls that let employees work with the devices and apps they choose while protecting your company information.</p></blockquote>
<hr />
<h4>9. SOTI MobiControl</h4>
<p><a href="https://www.soti.net/products/mobicontrol/">https://www.soti.net/products/mobicontrol/</a></p>
<blockquote><p>SOTI MobiControl is an enterprise mobility management solution that secures and manages Apple® iOS, Google Android<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2122.png" alt="™" class="wp-smiley" style="height: 1em; max-height: 1em;" />, and Microsoft Windows® devices, throughout their entire lifecycle, from deployment to retirement. It controls all aspects of business mobility — tracking physical assets, managing applications and content, as well as keeping devices and data safe and secure. SOTI is the proven leader for managing rugged, special-purpose devices used in key industries, such as: healthcare, transportation, logistics, retail and field services. It removes the complexity from managing a multi-OS, multi-vendor and multi-purpose business mobility program.</p></blockquote>
<hr />
<h3 id="10-simplysecure">10. SimplySecure</h3>
<p><a href="http://www.beachheadsolutions.com/">http://www.beachheadsolutions.com/</a></p>
<blockquote><p><strong>Simplify</strong> Securely manage all BYOD and company-owned devices<br />
You’ve got to secure and manage a wide range of company and employee owned laptops, phones and tablets. Good news; it’s an easy problem to solve! Our SimplySecure service lets you centrally manage all of them – even Windows PCs and Macs &#8211; from a single web-interface. Requiring no added hardware or software, it’s user-transparent, and easy to deploy and manage.</p></blockquote>
<hr />
<h4>11. Samsung KNOX</h4>
<p><a href="http://www.samsung.com/tw/business/mobile-solutions/knox-solutions/">http://www.samsung.com/tw/business/mobile-solutions/knox-solutions/</a></p>
<blockquote><p>Samsung KNOX 是一個內建於行動裝置內的受保護的虛擬空間， 具有專屬的主畫面、啟動程式、應用程式和Widget，可將私人文件、相片、行程、聯絡人、電子帳號、網瀏覽紀錄等存放於安全的KNOX 空間內。在使用Android 常用環境的同時，且擁有受保護空間的存取權。</p></blockquote>
]]></content:encoded>
					
					<wfw:commentRss>https://stackoverflow.max-everyday.com/2017/12/2017-mobile-device-management-solutions/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>MDM推送設定值到 iOS device</title>
		<link>https://stackoverflow.max-everyday.com/2017/09/mdm-settings-ios-device/</link>
					<comments>https://stackoverflow.max-everyday.com/2017/09/mdm-settings-ios-device/#respond</comments>
		
		<dc:creator><![CDATA[max-stackoverflow]]></dc:creator>
		<pubDate>Thu, 14 Sep 2017 02:06:48 +0000</pubDate>
				<category><![CDATA[iOS筆記]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[MDM]]></category>
		<guid isPermaLink="false">http://stackoverflow.max-everyday.com/?p=1331</guid>

					<description><![CDATA[透過 mdm 派送 settings 到 iOS...]]></description>
										<content:encoded><![CDATA[<p>透過 mdm 派送 settings 到 iOS app 的方法是透過 ApplicationConfiguration 指令來派送，ApplicationConfiguration指令要能正確執行的前提是：</p>
<ol>
<li><a href="https://stackoverflow.max-everyday.com/2017/09/ios-mdm-the-app-is-not-managed/">要被派送settings 的 App Identifier 要存在</a>。</li>
<li>被派送 settings 的 app 必需是被管控制。<br />
（透過 InstallApplication command 去安裝)</li>
</ol>
<p>出錯之後，MDM 告訴我們的Error Message:</p>
<blockquote>
<pre> &lt;key&gt;Settings&lt;/key&gt;
 &lt;array&gt;
 &lt;dict&gt;
 &lt;key&gt;ErrorChain&lt;/key&gt;
 &lt;array&gt;
 &lt;dict&gt;
 &lt;key&gt;ErrorCode&lt;/key&gt;
 &lt;integer&gt;12038&lt;/integer&gt;
 &lt;key&gt;ErrorDomain&lt;/key&gt;
 &lt;string&gt;MCMDMErrorDomain&lt;/string&gt;
 &lt;key&gt;LocalizedDescription&lt;/key&gt;
 &lt;string&gt;App「app id」不受管理。&lt;/string&gt;
 &lt;key&gt;USEnglishDescription&lt;/key&gt;
 &lt;string&gt;The app “app id” is not managed.&lt;/string&gt;
 &lt;/dict&gt;
 &lt;/array&gt;</pre>
</blockquote>
<p>Managed app configuration changes that are pushed down from an MDM server appear in <code>NSUSerDefaults</code> so you can add an observer to be alerted of any changes to <code>NSUserDefaults</code>. The Managed app configuration dictionary pushed down from the MDM server is stored in the key named: <code>com.apple.configuration.managed</code></p>
<p>Your application can also send a dictionary containing the feedback to the MDM server. The dictionary that is sent back to the MDM server as feedback must be stored in this key <code>com.apple.feedback.managed</code></p>
<p>In order to test all of this you would need a device that is managed by an MDM server and the application must be installed by the MDM server that supports ApplicationConfiguration setting and ManagedApplicationFeedback commands.</p>
<p>The sample application&#8217;s readme.txt file recommends seeing the WWDC 2013 Session 301 &#8220;Extending Your Apps for Enterprise and Education Use&#8221; for a demo of this application.</p>
<hr />
<p>to read the config (swift 3):</p>
<pre class="default prettyprint prettyprinted"><code><span class="kwd">if</span> <span class="kwd">let</span><span class="pln"> managedConf </span><span class="pun">=</span> <span class="typ">UserDefaults</span><span class="pun">.</span><span class="pln">standard</span><span class="pun">.</span><span class="kwd">object</span><span class="pun">(</span><span class="pln">forKey</span><span class="pun">:</span> <span class="str">"com.apple.configuration.managed"</span><span class="pun">)</span> <span class="kwd">as</span><span class="pun">?</span> <span class="pun">[</span><span class="typ">String</span><span class="pun">:</span><span class="typ">Any</span><span class="pun">?]</span> <span class="pun">{</span>
    <span class="kwd">if</span> <span class="kwd">let</span><span class="pln"> serverURL </span><span class="pun">=</span><span class="pln"> managedConf</span><span class="pun">[</span><span class="str">"serverURL"</span><span class="pun">]</span> <span class="kwd">as</span><span class="pun">?</span> <span class="typ">String</span><span class="pun">{</span>
        <span class="kwd">return</span><span class="pln"> serverURL
    </span><span class="pun">}</span>
<span class="pun">}</span>
<span class="kwd">if</span> <span class="kwd">let</span><span class="pln"> serverURL </span><span class="pun">=</span> <span class="typ">Bundle</span><span class="pun">.</span><span class="pln">main</span><span class="pun">.</span><span class="kwd">object</span><span class="pun">(</span><span class="pln">forInfoDictionaryKey</span><span class="pun">:</span> <span class="str">"serverURL"</span><span class="pun">)</span> <span class="kwd">as</span><span class="pun">?</span> <span class="typ">String</span> <span class="pun">{</span>
    <span class="kwd">return</span><span class="pln"> serverURL
</span><span class="pun">}</span>
<span class="kwd">return</span>  <span class="str">"https://apple.com/"</span></code></pre>
<p>as you can see &#8211; the app needs to manually enable reading from MDM bundle configuration.</p>
<p>P,S: only managed apps can get those configs.</p>
<hr />
<p>資料來源：</p>
<p>Using MDM To Configure An Enterprise App Via NSUserDefaults<br />
<a href="https://stackoverflow.com/questions/20752254/using-mdm-to-configure-an-enterprise-app-via-nsuserdefaults">https://stackoverflow.com/questions/20752254/using-mdm-to-configure-an-enterprise-app-via-nsuserdefaults</a></p>
<p>&nbsp;</p>
<p>範例：</p>
<p><a href="https://github.com/robovm/apple-ios-samples/blob/master/ManagedAppConfig/ManagedAppConfig/APLViewController.m">https://github.com/robovm/apple-ios-samples/blob/master/ManagedAppConfig/ManagedAppConfig/APLViewController.m</a></p>
<pre>// The Managed app configuration dictionary pushed down from an MDM server are stored in this key.
static NSString * const kConfigurationKey = @"com.apple.configuration.managed";

// This sample application allows for a server url and cloud document switch to be configured via MDM
// Application developers should document feedback dictionary keys, including data types and valid value ranges.
static NSString * const kConfigurationServerURLKey = @"serverURL";
static NSString * const kConfigurationDisableCloudDocumentSyncKey = @"disableCloudDocumentSync";

// The dictionary that is sent back to the MDM server as feedback must be stored in this key.
static NSString * const kFeedbackKey = @"com.apple.feedback.managed";

// This sample application tracks a success and failure count for the loading of a UIWebView.
// Application developers should document feedback dictionary keys including data types to expect for feedback queries
static NSString * const kFeedbackSuccessCountKey = @"successCount";
static NSString * const kFeedbackFailureCountKey = @"failureCount";

- (void)readDefaultsValues {
    
    NSDictionary *serverConfig = [[NSUserDefaults standardUserDefaults] dictionaryForKey:kConfigurationKey];
    NSString *serverURLString = serverConfig[kConfigurationServerURLKey];
    
    // Data coming from MDM server should be validated before use.
    // If validation fails, be sure to set a sensible default value as a fallback, even if it is nil.
    if (serverURLString &amp;&amp; [serverURLString isKindOfClass:[NSString class]]) {
        self.serverURLUILabel.text = serverURLString;
    } else {
        self.serverURLUILabel.text = @"http://foo.bar";
    }
    
    NSNumber *disableCloudDocumentSync = serverConfig[kConfigurationDisableCloudDocumentSyncKey];

    if (disableCloudDocumentSync &amp;&amp; [disableCloudDocumentSync isKindOfClass:[NSNumber class]]) {
        self.cloudDocumentSyncEnabledSwitch.on = ![disableCloudDocumentSync boolValue];
    } else {
        self.cloudDocumentSyncEnabledSwitch.on = YES;
    }
    
    // Fetch the success and failure count values from NSUserDefaults to display.
    // Data validation for feedback values is a good idea, in case the application wrote out an unexpected value.
    NSDictionary *feedback = [[NSUserDefaults standardUserDefaults] dictionaryForKey:kFeedbackKey];
    
    NSNumber *successCount = feedback[kFeedbackSuccessCountKey];
    if (successCount &amp;&amp; [successCount isKindOfClass:[NSNumber class]]) {
        self.successCount = [successCount unsignedIntegerValue];
    } else {
        self.successCount = 0;
    }
    
    self.successUILabel.text = [NSString stringWithFormat:@"%lu", (unsigned long)self.successCount];
    
    NSNumber *failureCount = feedback[kFeedbackFailureCountKey];
    if (failureCount &amp;&amp; [failureCount isKindOfClass:[NSNumber class]]) {
        self.failureCount = [failureCount unsignedIntegerValue];
    } else {
        self.failureCount = 0;
    }
    
    self.failureUILabel.text = [NSString stringWithFormat:@"%lu", (unsigned long)self.failureCount];
}
</pre>
<p>&nbsp;</p>
<h4>相關文章：</h4>
<p>Sample iOS 行動裝置管理伺服器(MDM server)<br />
<a href="https://stackoverflow.max-everyday.com/2017/09/ios-mdm-server/">https://stackoverflow.max-everyday.com/2017/09/ios-mdm-server/</a></p>
<p>[iOS] install / uninstall app on device through MDM server?<br />
<a href="https://stackoverflow.max-everyday.com/wp-admin/post-new.php">https://stackoverflow.max-everyday.com/wp-admin/post-new.php</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://stackoverflow.max-everyday.com/2017/09/mdm-settings-ios-device/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>ios mdm The app is not managed.</title>
		<link>https://stackoverflow.max-everyday.com/2017/09/ios-mdm-the-app-is-not-managed/</link>
					<comments>https://stackoverflow.max-everyday.com/2017/09/ios-mdm-the-app-is-not-managed/#respond</comments>
		
		<dc:creator><![CDATA[max-stackoverflow]]></dc:creator>
		<pubDate>Wed, 13 Sep 2017 02:10:02 +0000</pubDate>
				<category><![CDATA[iOS筆記]]></category>
		<category><![CDATA[Python筆記]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[MDM]]></category>
		<guid isPermaLink="false">http://stackoverflow.max-everyday.com/?p=1324</guid>

					<description><![CDATA[如果你收到下面這個 Error, 代表你呼叫的順...]]></description>
										<content:encoded><![CDATA[<p>如果你收到下面這個 Error, 代表你呼叫的順序錯誤。</p>
<p>解法：</p>
<blockquote><p>請先在 queue 裡放入 &#8220;<span style="color: #ff0000;"><strong>InstallCustomApp</strong></span>&#8221; command , 再放入 &#8220;<span style="color: #ff0000;"><strong>ApplicationConfiguration</strong></span>&#8221; 即可。</p></blockquote>
<p>&nbsp;</p>
<p>iOS device 回傳的 Error:</p>
<hr />
<pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"&gt;
&lt;plist version="1.0"&gt;
&lt;dict&gt;
	&lt;key&gt;CommandUUID&lt;/key&gt;
	&lt;string&gt;62f7a5be-a37c-4cd4-b58b-000a4e4496b4&lt;/string&gt;
	&lt;key&gt;Settings&lt;/key&gt;
	&lt;array&gt;
		&lt;dict&gt;
			&lt;key&gt;ErrorChain&lt;/key&gt;
			&lt;array&gt;
				&lt;dict&gt;
					&lt;key&gt;ErrorCode&lt;/key&gt;
					&lt;integer&gt;12038&lt;/integer&gt;
					&lt;key&gt;ErrorDomain&lt;/key&gt;
					&lt;string&gt;MCMDMErrorDomain&lt;/string&gt;
					&lt;key&gt;LocalizedDescription&lt;/key&gt;
					&lt;string&gt;App「your.app.id.here」不受管理。&lt;/string&gt;
					&lt;key&gt;USEnglishDescription&lt;/key&gt;
					&lt;string&gt;The app “your.app.id.here” is not managed.&lt;/string&gt;
				&lt;/dict&gt;
			&lt;/array&gt;
			&lt;key&gt;Identifier&lt;/key&gt;
			&lt;string&gt;tw.thinkingsoftware.geofence&lt;/string&gt;
			&lt;key&gt;Item&lt;/key&gt;
			&lt;string&gt;ApplicationConfiguration&lt;/string&gt;
			&lt;key&gt;Status&lt;/key&gt;
			&lt;string&gt;Error&lt;/string&gt;
		&lt;/dict&gt;
	&lt;/array&gt;
	&lt;key&gt;Status&lt;/key&gt;
	&lt;string&gt;Acknowledged&lt;/string&gt;
	&lt;key&gt;UDID&lt;/key&gt;
	&lt;string&gt;38c2840ff0be3ccff43299d2e06320485facb2f5&lt;/string&gt;
&lt;/dict&gt;
&lt;/plist&gt;
</pre>
<p>&nbsp;</p>
<hr />
<h4>相關文章：</h4>
<p>[iOS] get MDM settings from system dictionary in swift<br />
<a href="https://stackoverflow.max-everyday.com/2018/01/ios-get-mdm-settings-from-system-dictionary-in-swift/">https://stackoverflow.max-everyday.com/2018/01/ios-get-mdm-settings-from-system-dictionary-in-swift/</a></p>
<p>MDM推送設定值到 iOS device<br />
<a href="https://stackoverflow.max-everyday.com/2017/09/mdm-settings-ios-device/">https://stackoverflow.max-everyday.com/2017/09/mdm-settings-ios-device/</a></p>
<p>MDM推送App到 iOS device<br />
<a href="https://stackoverflow.max-everyday.com/2017/09/mdm-install-app/">https://stackoverflow.max-everyday.com/2017/09/mdm-install-app/</a></p>
<p>Sample iOS 行動裝置管理伺服器(MDM server)<br />
<a href="https://stackoverflow.max-everyday.com/2017/09/ios-mdm-server/">https://stackoverflow.max-everyday.com/2017/09/ios-mdm-server/</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://stackoverflow.max-everyday.com/2017/09/ios-mdm-the-app-is-not-managed/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Sample iOS 行動裝置管理伺服器(MDM server)</title>
		<link>https://stackoverflow.max-everyday.com/2017/09/ios-mdm-server/</link>
					<comments>https://stackoverflow.max-everyday.com/2017/09/ios-mdm-server/#comments</comments>
		
		<dc:creator><![CDATA[max-stackoverflow]]></dc:creator>
		<pubDate>Wed, 06 Sep 2017 07:00:45 +0000</pubDate>
				<category><![CDATA[iOS筆記]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[MDM]]></category>
		<guid isPermaLink="false">http://stackoverflow.max-everyday.com/?p=1250</guid>

					<description><![CDATA[滿神奇的，第1次接觸到 iOS 行動裝置管理伺服...]]></description>
										<content:encoded><![CDATA[<p>滿神奇的，第1次接觸到 iOS 行動裝置管理伺服器(Mobile Device Manager, MDM)。藉由MDM服務，企業可以用來控管配發給員工的iOS Device。</p>
<p>首先，建立一個Enroll.mobileconfig 放在網路上給 iOS 的瀏覽器去下載。</p>
<p>等 iOS device 下載完 Enroll.mobileconfig 之後，iOS device 去自動去觸發 &lt;key&gt;CheckInURL&lt;/key&gt; 裡的URL, EX: https://mdmserver/checkin，去註冊 device 時所帶的 plist 如下。</p>
<hr />
<pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"&gt;
&lt;plist version="1.0"&gt;
&lt;dict&gt;
	&lt;key&gt;BuildVersion&lt;/key&gt;
	&lt;string&gt;14G60&lt;/string&gt;
	&lt;key&gt;IMEI&lt;/key&gt;
	&lt;string&gt;99 000289 244779 6&lt;/string&gt;
	&lt;key&gt;MEID&lt;/key&gt;
	&lt;string&gt;99000289244779&lt;/string&gt;
	&lt;key&gt;<span style="color: #ff0000;"><strong>MessageType</strong></span>&lt;/key&gt;
	&lt;string&gt;<span style="color: #ff0000;"><strong>Authenticate</strong></span>&lt;/string&gt;
	&lt;key&gt;OSVersion&lt;/key&gt;
	&lt;string&gt;10.3.3&lt;/string&gt;
	&lt;key&gt;ProductName&lt;/key&gt;
	&lt;string&gt;iPad3,6&lt;/string&gt;
	&lt;key&gt;SerialNumber&lt;/key&gt;
	&lt;string&gt;DMPK3ML3F190&lt;/string&gt;
	&lt;key&gt;Topic&lt;/key&gt;
	&lt;string&gt;com.apple.mgmt.External.033dca28-442a-4bcc-9519-ad1165d859c9&lt;/string&gt;
	&lt;key&gt;<span style="color: #ff0000;"><strong>UDID</strong></span>&lt;/key&gt;
	&lt;string&gt;38c2840ff0be3ccff43299d2e06320485facb2f5&lt;/string&gt;
&lt;/dict&gt;
&lt;/plist&gt;</pre>
<hr />
<p>&nbsp;</p>
<p>第1 次 mdm server 收到 MessageType=Authenticate 時就回給iOS device： http status=200 (ok) 回去就結束。 iOS device 發現被摸摸頭很高興，於是就跟 mdm server 講更多關於自己的事情  MessageType=TokenUpdate。</p>
<p>EX: https://mdmserver/checkin</p>
<hr />
<pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"&gt;
&lt;plist version="1.0"&gt;
&lt;dict&gt;
	&lt;key&gt;AwaitingConfiguration&lt;/key&gt;
	&lt;false/&gt;
	&lt;key&gt;<span style="color: #ff0000;"><strong>MessageType</strong></span>&lt;/key&gt;
	&lt;string&gt;<span style="color: #ff0000;"><strong>TokenUpdate</strong></span>&lt;/string&gt;
	&lt;key&gt;PushMagic&lt;/key&gt;
	&lt;string&gt;2E772CFE-FA44-4C6F-B8D6-D56BE793A2AC&lt;/string&gt;
	&lt;key&gt;Token&lt;/key&gt;
	&lt;data&gt;
	UpTQP5+39KrJHjHRQCW3hAVJ5gEdjbJTpyRlLjTLiI0=
	&lt;/data&gt;
	&lt;key&gt;Topic&lt;/key&gt;
	&lt;string&gt;com.apple.mgmt.External.033dca28-442a-4bcc-9519-ad1165d859c9&lt;/string&gt;
	&lt;key&gt;<span style="color: #ff0000;"><strong>UDID</strong></span>&lt;/key&gt;
	&lt;string&gt;38c2840ff0be3ccff43299d2e06320485facb2f5&lt;/string&gt;
	&lt;key&gt;UnlockToken&lt;/key&gt;
	&lt;data&gt;
	REFUQQAABORWRVJTAAAABAAAAARUWVBFAAAABAAAAAJVVUlEAAAAENxVQi0uxUK9vpMA
	h6TbX2pITUNLAAAAKJicev+1Kg/INk9Mi0yskAmSozj+s5s1pH4d7zE6lLFMwvj33Vj5
	jnZXUkFQAAAABAAAAAFTQUxUAAAAFLAB9iKjjIO6cOWmSnJtCTQDZJytSVRFUgAAAAQA
	AMNQVVVJRAAAABBJYHPy2zxAd72Y8XQFxU8OQ0xBUwAAAAQAAAALV1JBUAAAAAQAAAAB
	S1RZUAAAAAQAAAAAV1BLWQAAACCio4CsOqbuG+ZfIL769K649iwg+JScRITAjsSSbwf8
	C1VVSUQAAAAQTbNMLHZjS5CAJYSXn2SCUkNMQVMAAAAEAAAACldSQVAAAAAEAAAAA0tU
	WVAAAAAEAAAAAFdQS1kAAAAoCEq3sJ3fAaclGAz9PpeI3UXWhXaMkXB6nT1lTxLbpY+b
	wr02rXzcflVVSUQAAAAQwOczETaITtCYGKQoKeyDHkNMQVMAAAAEAAAACVdSQVAAAAAE
	AAAAA0tUWVAAAAAEAAAAAFdQS1kAAAAo8uZIgpAbJkDdLBBHkC0mKE1Znbx5ctVPbrxs
	pAysmokwWfWoCjybQ1VVSUQAAAAQh+2ChuT/SZKApwl6SN95V0NMQVMAAAAEAAAACFdS
	QVAAAAAEAAAAAUtUWVAAAAAEAAAAAFdQS1kAAAAg8OQJAVZOhFgU4ZNfdVyyiLK2M8Om
	pe1QpqKgY3zUUtZVVUlEAAAAEJuQO9TE4kKGvfitqaBZ7GZDTEFTAAAABAAAAAdXUkFQ
	AAAABAAAAANLVFlQAAAABAAAAABXUEtZAAAAKGSwa/xg0dfVVVsLBFwCYM+mxXCJBPaI
	WkfKLrBIAnLyQXQDSjgiIgpVVUlEAAAAEGd61qmxfE++u0hFhPPUjj9DTEFTAAAABAAA
	AAZXUkFQAAAABAAAAANLVFlQAAAABAAAAABXUEtZAAAAKDc/4WTslCM06c3+axbyhGhp
	ZmlGfbs/4w0D3QGP4TkBjm6mDFKpJIRVVUlEAAAAEOToSX+0SUGXvre4eTxV3dtDTEFT
	AAAABAAAAAVXUkFQAAAABAAAAANLVFlQAAAABAAAAABXUEtZAAAAKKVGbjWyMStmuzIt
	zblc9tUY/ZZXccuggmBrhQVnJmPGQYUlvXy2sIhVVUlEAAAAEOXSlmKeX0nQrTi5Bt5r
	/2xDTEFTAAAABAAAAANXUkFQAAAABAAAAANLVFlQAAAABAAAAABXUEtZAAAAKHBXGOT/
	KqH44qwoUfw8liLoyJWmjMl1+xMx6uiIABfeeFl2RdEllClVVUlEAAAAEHNbUmvOukxn
	nfKr2d/7fZNDTEFTAAAABAAAAAJXUkFQAAAABAAAAANLVFlQAAAABAAAAAFXUEtZAAAA
	KHK9aMigbkbkEhrf9LFEp0S+lMCgkCecD4ZoW0PB2L7Kc08/UwAx9SxQQktZAAAAIO/9
	UaCArpoJGpPfhqPQepJ3ZCz/Z5KNf3B41oGymXFtVVVJRAAAABDo7qHpgTZKU4LuYz6C
	jQ9/Q0xBUwAAAAQAAAABV1JBUAAAAAQAAAADS1RZUAAAAAQAAAAAV1BLWQAAACgWozY+
	m21bLAXBz6haguaEWVmDv/n6g7MKRv0tt5MbctAeg9TeoWKVU0lHTgAAABSagQ4vwR/D
	NA2+pMD/8D61Ec6mSQ==
	&lt;/data&gt;
&lt;/dict&gt;
&lt;/plist&gt;
</pre>
<hr />
<p>&nbsp;</p>
<p>當 iOS device 做完 token update 之後，會存取 EX: https://mdmserver/server , 傳的訊息內容：</p>
<hr />
<pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"&gt;
&lt;plist version="1.0"&gt;
&lt;dict&gt;
	&lt;key&gt;<span style="color: #ff0000;"><strong>Status</strong></span>&lt;/key&gt;
	&lt;string&gt;<span style="color: #ff0000;"><strong>Idle</strong></span>&lt;/string&gt;
	&lt;key&gt;UDID&lt;/key&gt;
	&lt;string&gt;38c2840ff0be3ccff43299d2e06320485facb2f5&lt;/string&gt;
&lt;/dict&gt;
&lt;/plist&gt;
</pre>
<hr />
<p>&nbsp;</p>
<p>比照之前被摸頭的流程，所以 mdm server 回傳 200 (ok) 之後，iOS device 會再呼叫一次 /server 並告訴 mdm server 自己更多的身世。</p>
<pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"&gt;
&lt;plist version="1.0"&gt;
&lt;dict&gt;
	&lt;key&gt;<span style="color: #ff0000;"><strong>CommandUUID</strong></span>&lt;/key&gt;
	&lt;string&gt;9cf1dd6f-077d-4171-bda3-6c5dbda572e5&lt;/string&gt;
	&lt;key&gt;<span style="color: #ff0000;"><strong>QueryResponses</strong></span>&lt;/key&gt;
	&lt;dict&gt;
		&lt;key&gt;AvailableDeviceCapacity&lt;/key&gt;
		&lt;real&gt;10.320999145507812&lt;/real&gt;
		&lt;key&gt;BatteryLevel&lt;/key&gt;
		&lt;real&gt;0.49000000953674316&lt;/real&gt;
		&lt;key&gt;BluetoothMAC&lt;/key&gt;
		&lt;string&gt;94:94:94:94:94:a6&lt;/string&gt;
		&lt;key&gt;BuildVersion&lt;/key&gt;
		&lt;string&gt;14G60&lt;/string&gt;
		&lt;key&gt;CellularTechnology&lt;/key&gt;
		&lt;integer&gt;3&lt;/integer&gt;
		&lt;key&gt;DataRoamingEnabled&lt;/key&gt;
		&lt;false/&gt;
		&lt;key&gt;DeviceCapacity&lt;/key&gt;
		&lt;real&gt;12.137939453125&lt;/real&gt;
		&lt;key&gt;DeviceName&lt;/key&gt;
		&lt;string&gt;XXX 的 iPad&lt;/string&gt;
		&lt;key&gt;IMEI&lt;/key&gt;
		&lt;string&gt;99 000289 244779 6&lt;/string&gt;
		&lt;key&gt;IsRoaming&lt;/key&gt;
		&lt;true/&gt;
		&lt;key&gt;MEID&lt;/key&gt;
		&lt;string&gt;99000289244779&lt;/string&gt;
		&lt;key&gt;Model&lt;/key&gt;
		&lt;string&gt;MD525TA&lt;/string&gt;
		&lt;key&gt;ModelName&lt;/key&gt;
		&lt;string&gt;iPad&lt;/string&gt;
		&lt;key&gt;ModemFirmwareVersion&lt;/key&gt;
		&lt;string&gt;11.60.00&lt;/string&gt;
		&lt;key&gt;OSVersion&lt;/key&gt;
		&lt;string&gt;10.3.3&lt;/string&gt;
		&lt;key&gt;ProductName&lt;/key&gt;
		&lt;string&gt;iPad3,6&lt;/string&gt;
		&lt;key&gt;SerialNumber&lt;/key&gt;
		&lt;string&gt;DMPK3ML3F190&lt;/string&gt;
		&lt;key&gt;UDID&lt;/key&gt;
		&lt;string&gt;38c2840ff0be3ccff43299d2e06320485facb2f5&lt;/string&gt;
		&lt;key&gt;WiFiMAC&lt;/key&gt;
		&lt;string&gt;94:94:94:94:94:a5&lt;/string&gt;
	&lt;/dict&gt;
	&lt;key&gt;<span style="color: #ff0000;"><strong>Status</strong></span>&lt;/key&gt;
	&lt;string&gt;Acknowledged&lt;/string&gt;
	&lt;key&gt;UDID&lt;/key&gt;
	&lt;string&gt;38c2840ff0be3ccff43299d2e06320485facb2f5&lt;/string&gt;
&lt;/dict&gt;
&lt;/plist&gt;
</pre>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>當 device 的 profile 移除的 plist:</p>
<p>&nbsp;</p>
<pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"&gt;
&lt;plist version="1.0"&gt;
&lt;dict&gt;
	&lt;key&gt;<span style="color: #ff0000;"><strong>MessageType</strong></span>&lt;/key&gt;
	&lt;string&gt;<strong><span style="color: #ff0000;">CheckOut</span></strong>&lt;/string&gt;
	&lt;key&gt;Topic&lt;/key&gt;
	&lt;string&gt;com.apple.mgmt.External.033dca28-442a-4bcc-9519-ad1165d859c9&lt;/string&gt;
	&lt;key&gt;<span style="color: #ff0000;"><strong>UDID</strong></span>&lt;/key&gt;
	&lt;string&gt;38c2840ff0be3ccff43299d2e06320485facb2f5&lt;/string&gt;
&lt;/dict&gt;
&lt;/plist&gt;
</pre>
<hr />
<p>&nbsp;</p>
<p>滿有趣的，對 iOS device 送 command ，餵給他們吃的 command 他們不喜歡吃，吐出來時還會講：</p>
<pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"&gt;
&lt;plist version="1.0"&gt;
&lt;dict&gt;
	&lt;key&gt;CommandUUID&lt;/key&gt;
	&lt;string&gt;139662d1-bb84-42d1-8785-ba8aa7409d6f&lt;/string&gt;
	&lt;key&gt;ErrorChain&lt;/key&gt;
	&lt;array&gt;
		&lt;dict&gt;
			&lt;key&gt;ErrorCode&lt;/key&gt;
			&lt;integer&gt;12021&lt;/integer&gt;
			&lt;key&gt;ErrorDomain&lt;/key&gt;
			&lt;string&gt;MCMDMErrorDomain&lt;/string&gt;
			&lt;key&gt;LocalizedDescription&lt;/key&gt;
			&lt;string&gt;「ApplicationConfiguration」不是有效的要求類型。&lt;/string&gt;
			&lt;key&gt;USEnglishDescription&lt;/key&gt;
			&lt;string&gt;“ApplicationConfiguration” is not a valid request type.&lt;/string&gt;
		&lt;/dict&gt;
	&lt;/array&gt;
	&lt;key&gt;Status&lt;/key&gt;
	&lt;string&gt;Error&lt;/string&gt;
	&lt;key&gt;UDID&lt;/key&gt;
	&lt;string&gt;38c2840ff0be3ccff43299d2e06320485facb2f5&lt;/string&gt;
&lt;/dict&gt;
&lt;/plist&gt;

</pre>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h4>相關文章：</h4>
<p>「三次創作」：</p>
<p style="padding-left: 30px;">Sample iOS MDM server<br />
<a href="https://github.com/macadmins/mdm-server">https://github.com/macadmins/mdm-server</a></p>
<p>「二次創作」：</p>
<p style="padding-left: 30px;">Sample iOS MDM server<br />
<a href="https://github.com/project-imas/mdm-server">https://github.com/project-imas/mdm-server</a></p>
<p>「原創」：</p>
<p style="padding-left: 30px;">Intrepidus Group&#8217;s iOS MDM tools<br />
<a href="https://github.com/intrepidusgroup/imdmtools">https://github.com/intrepidusgroup/imdmtools</a></p>
<p>Java 版本的 MDM：</p>
<p><a href="https://github.com/davewang/iOS-MDM">https://github.com/davewang/iOS-MDM</a></p>
<p>javapns<br />
Apple Push Notification Service Provider for Java<br />
<a href="https://code.google.com/archive/p/javapns/">https://code.google.com/archive/p/javapns/</a></p>
<p>Deploying iPhone and iPad Mobile Device Management for java<br />
<a href="https://github.com/zuoyy/IOS-MDM-Server">https://github.com/zuoyy/IOS-MDM-Server</a></p>
<hr />
<p>[iOS] get MDM settings from system dictionary in swift<br />
<a href="https://stackoverflow.max-everyday.com/2018/01/ios-get-mdm-settings-from-system-dictionary-in-swift/">https://stackoverflow.max-everyday.com/2018/01/ios-get-mdm-settings-from-system-dictionary-in-swift/</a></p>
<p>MDM推送設定值到 iOS device<br />
<a href="https://stackoverflow.max-everyday.com/2017/09/mdm-settings-ios-device/">https://stackoverflow.max-everyday.com/2017/09/mdm-settings-ios-device/</a></p>
<p>MDM推送App到 iOS device<br />
<a href="https://stackoverflow.max-everyday.com/2017/09/mdm-install-app/">https://stackoverflow.max-everyday.com/2017/09/mdm-install-app/</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://stackoverflow.max-everyday.com/2017/09/ios-mdm-server/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
	</channel>
</rss>
