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