適用於 Android 的 Microsoft Intune 應用程式 SDK 可讓您將 Intune 應用程式保護原則 (也稱為 MAM 原則) 併入原生 Java/Kotlin Android 應用程式。 Intune 受控應用程式是與 Intune 應用程式 SDK 整合的應用程式。 當 Intune 主動管理應用程式時,Intune 系統管理員可以輕鬆地將應用程式保護原則部署至 Intune 管理的應用程式。
注意事項
本指南分為幾個不同的階段。 首先檢閱第 1 階段:規劃整合。
第 6 階段:應用程式組態
階段 Goals
- 瞭解 Android 上的應用程式設定選項。
- 決定您的應用程式應該新增哪些組態 (如果有的話)。
- 整合 Intune App SDK 應用程式設定 API。
- 為您的自訂應用程式組態實作衝突解決邏輯。
Android 上的應用程式組態
應用程式設定 (也稱為受管理設定或應用程式限制) 是應用程式特定且開發人員定義的設定,您可以新增至應用程式,讓管理員在受管理設定中使用時,對應用程式體驗進行更多控制。 例如,如果您的應用程式是瀏覽器,您可以選擇新增設定,讓管理員預設書籤、封鎖某些網頁或停用無痕模式。 應用程式設定是完全選擇性但功能強大的工具,可增強應用程式的管理體驗。
如需詳細資訊,請參閱 Microsoft Intune 的應用程式設定原則 。
Android 的 Built-In 應用程式配置
Android 在平台中內建了應用程式設定,稱為 受管理設定。 這些設定不相依於 Intune 應用程式 SDK,而且可以在未整合 Intune 應用程式 SDK 的應用程式上啟用。 這些設定僅適用於在使用 Google Android Enterprise 模式之一管理的裝置上使用應用程式時。 如需如何在 Microsoft Intune 中設定這些 Android Enterprise 模式的詳細資訊,請參閱註冊 Android 裝置 。 系統管理員可以在 Microsoft Intune 中 為受控 Android Enterprise 裝置設定這些應用程式設定原則 。
您的應用程式可以透過 Android 或 RestrictionsManager Intune 應用程式 SDK 擷取這些系統管理員設定的值。
如需詳細資訊,請參閱從 SDK 擷取應用程式設定。
受控 Google Play 應用程式的委派範圍
應用程式開發人員可以使用 委派範圍 ,為其受管理的 Google Play 應用程式整合增強的權限。 委派範圍為受控 Google Play 應用程式提供下列功能:
- 允許其他應用程式安裝和管理憑證
- 允許應用程式存取 Android 安全性記錄
- 允許應用程式存取 Android 網路活動記錄
使用 Google 的 API 將這些功能整合到受控 Google Play 應用程式之後,您可以使用裝置組態配置檔在 Intune 中設定這些設定。 如需詳細資訊,請參閱 Android Enterprise 裝置設定 -> 公司擁有 > 的應用程式。
如需應用程式實作詳細資料,請參閱 Android 開發人員說明文件 - 委派範圍。
Intune 應用程式 SDK 應用程式設定
Intune 應用程式 SDK 支援另一種傳遞應用程式設定的機制,與 Android Enterprise 受控設定分開。 這些設定是 Microsoft Intune 獨有的,而且僅適用於已整合 Intune 應用程式 SDK 的應用程式。 不過,這些設定不限於具有 Android Enterprise 管理的裝置。 系統管理員可以在 Microsoft Intune 中為 受控應用程式設定這些應用程式設定原則 。
注意事項
也可以使用圖形 API 來設定應用程式設定。 如需詳細資訊,請參閱 MAM 目標設定的圖形 API 檔。
您的應用程式必須透過 Intune 應用程式 SDK 擷取這些系統管理員設定的值。 如需詳細資訊,請參閱從 SDK 擷取應用程式設定。
我應該在我的應用程式中新增哪些設定?
本指南無法為您回答這個問題。 只有您和您的團隊知道哪些功能使您的應用程式在管理時更有價值。
下列問題可能有助於引導討論,並顯示您可能想要新增至應用程式的設定:
- 您的應用程式目前提供哪些功能?
- 在管理期間停用這些功能中的任何一個是否有價值?
- 在管理期間更改這些功能中的任何一個是否有價值?
- 您的應用程式目前在管理下是如何使用的?
- 系統管理員可以代表其使用者預先設定任何選項嗎?
- 系統管理員或使用者是否會採取任何受控案例專屬的動作?
- 您的受管理使用者是否要求的功能可能不適合整個使用者母體?
針對您決定新增至應用程式的每個設定,您必須定義三個項目:
- 索引鍵 - 此字串會從其他設定中唯一識別此設定。 它應該是人類可讀的,因為它將由管理員配置。
- 類型 - 此設定是什麼資料類型? 是字串、布林值、整數、陣列等嗎?
- 衝突解決策略 - 如果系統管理員為相同的索引鍵設定多個值,您的應用程式將如何回應? 在上述瀏覽器範例中,書籤清單可能會組合所有值,而停用隱身的設定可能會選擇在任何衝突值為「true」時停用。
我的應用程式是否應該支援受控裝置或受控應用程式的設定?
套用至受管理裝置的設定和套用至受管理應用程式的設定並不 互斥。 在決定要支援哪種 (或兩者) 設定時,應考慮使用者的需求。
| 組態範圍 | 受管理裝置的設定 | 受管理應用程式的設定 |
|---|---|---|
| 設備適用性 | 僅適用於 Android Enterprise 裝置管理下的裝置。 | 適用於所有裝置,只要應用程式整合 Intune 應用程式 SDK 並安裝公司入口網站。 |
| 平台 | 僅限 Android,僅限於提供 Google 服務的設備 | iOS App SDK 支援相同的設定。 身為開發人員,您可以共用這些金鑰,以獲得一致的跨平台體驗。 |
| 適用性 | 任何 EMM | Microsoft Intune 獨有 |
| 結構描述可探索性 | 架構在應用程式上傳至 Play 後公開提供 | 開發人員控制下的結構描述可探索性 |
這兩種類型的應用程式設定都依賴鍵值組。 Microsoft Intune 不會檢查這些設定的內容,只會將系統管理員設定的值傳遞至您的應用程式。
Intune App SDK 應用程式設定 API 包含 來自這兩個 通道的系統管理員設定值。 如果您的應用程式支援這兩種類型的應用程式設定,請使用如下所述的 API。
從 SDK 擷取應用程式設定
應用程式可以使用 MAMAppConfigManager 和 MAMAppConfig 類別,從這兩個通道接收組態。
MAMAppConfigManager configManager = MAMComponents.get(MAMAppConfigManager.class);
String oid = <OID of user account>;
MAMAppConfig appConfig = configManager.getAppConfigForOID(oid);
String fooValue = appConfig.getStringForKey("foo", MAMAppConfig.StringQueryType.Any);
如果沒有 MAM 註冊帳戶,但您的應用程式仍想要擷取 Android Enterprise 組態值, (不會以特定帳戶) 為目標,您可以傳遞 null OID 的空字串。
注意事項
如果您的應用程式使用 Intune 應用程式 SDK 來擷取 Android Enterprise 受控設定,且未安裝公司入口網站,則這些設定會透過具有空白身分識別的 傳遞MAMUserNotification。
您的應用程式也可以要求原始資料做為鍵值組集清單,而不是透過特定鍵進行查詢。
List<Map<String, String>> getFullData()
您的應用程式也可以註冊 REFRESH_APP_CONFIG 通知,通知應用程式有新的應用程式設定資料可用。
如果您的應用程式快取應用程式設定資料,則 必須 註冊此通知,並使處理常式中的任何快取資料失效。
如需詳細資訊,請參閱 註冊來自 SDK 的通知 。
解決衝突
如果多個應用程式設定原則以相同的應用程式和帳戶為目標,則相同的金鑰可能會有多個衝突的值可用。
注意事項
MAM 應用程式設定中設定的值會覆寫具有 Android Enterprise 設定中相同索引鍵設定的值。
如果系統管理員為相同的索引鍵設定衝突的值,Intune 沒有任何方式可以自動解決此衝突,而且會讓所有值可供您的應用程式使用。 如果管理員將具有相同金鑰的不同應用程式設定集指定到包含相同帳戶的多個群組,則可能會發生此類衝突。
您的應用程式可以從 MAMAppConfig 物件要求指定索引鍵的所有值,因此您可以解決與您自己的商務邏輯的衝突:
List<Boolean> getAllBooleansForKey(String key)
List<Long> getAllIntegersForKey(final String key)
List<Double> getAllDoublesForKey(final String key)
List<String> getAllStringsForKey(final String key)
或者,您可以要求使用其中一個內建衝突解決策略來選擇值:
Boolean getBooleanForKey(String key, BooleanQueryType queryType)
Long getIntegerForKey(String key, NumberQueryType queryType)
Double getDoubleForKey(String key, NumberQueryType queryType)
String getStringForKey(String key, StringQueryType queryType)
可用的內建衝突解決策略包括:
-
BooleanQueryType.Any,BooleanQueryType.And,BooleanQueryType.Or -
NumberQueryType.Any,NumberQueryType.Min,NumberQueryType.Max -
StringQueryType.Any, ,StringQueryType.MinStringQueryType.Max, 其中 min 和 max 來自按字母順序排序的清單。
退出條件
Intune 負責將應用程式設定原則值傳遞至您的應用程式;之後,您的應用程式會負責使用這些值來變更應用程式內的行為或 UI。 徹底的端到端測試應涵蓋這兩個組件。
若要驗證 Intune 是否正確傳遞應用程式設定原則:
- 設定以應用程式為目標的應用程式設定原則,並部署至您的測試帳戶。
- 如果您的應用程式支援受控裝置的應用程式設定,請參閱 受控 Android Enterprise 裝置的應用程式設定原則。
- 如果您的應用程式支援受控應用程式的應用程式設定,請參閱 受控應用程式的應用程式設定原則。
- 如果您的應用程式支援這兩種類型的應用程式設定,請建立這兩種類型的原則進行測試。
- 使用測試帳戶登入您的應用程式。
- 如需受控裝置,請參閱 Android 企業應用程式設定原則 和 註冊 Android 裝置。
- 對於受管理應用程式:
- 安裝您的應用程式和 Intune 公司入口網站。
- 使用測試帳戶登入您的應用程式。
- 瀏覽您的應用程式,以練習呼叫
MAMAppConfigManager的每個程式碼路徑 ,getAppConfigForOIDgetFullData或 。- 記錄呼叫的
getAppConfigForOID結果是驗證傳遞哪些設定的簡單方法。 不過,由於系統管理員可以輸入應用程式組態設定的任何資料,因此請注意不要記錄任何私人使用者資料。
- 記錄呼叫的
- 請參閱 驗證套用的應用程式設定原則。
由於應用程式設定是應用程式特定的,因此只有您知道如何驗證應用程式應如何變更每個應用程式設定的行為或 UI。
測試時,請考慮以下因素:
- 使用應用程式支援的每個值建立不同的測試應用程式設定原則,確保涵蓋所有案例。
- 透過建立多個測試應用程式組態原則,為每個設定建立不同的值,以驗證應用程式的衝突解決邏輯。
- 如果您的應用程式已註冊
REFRESH_APP_CONFIG通知,請在應用程式使用中時更新應用程式設定原則、等候原則更新,並確認已正確執行此程式碼路徑。 - 如果您的應用程式支援這兩種類型的應用程式設定,請測試這兩種情況,以確保您的實作提供正確的身分識別
getAppConfigForOID。
後續步驟
完成上述所有 結束準則 之後,您的應用程式現在已成功整合,就像應用程式設定原則一樣。
後續一節階段 7:應用程式參與功能可能需要,也可能不需要,視您應用程式所需的應用程式保護原則支援而定。 如果您不確定這些功能是否適用於您的應用程式,請重新瀏覽 SDK 整合的關鍵決策。