分享方式:


Intune App SDK for Android - 應用程式設定

Microsoft Intune App SDK for Android 可讓您將 Intune 應用程式保護原則 (也稱為應用程式或 MAM 原則) 併入原生 Java/Kotlin Android 應用程式。 Intune 受控應用程式是與 Intune App SDK 整合的應用程式。 當 Intune 主動管理應用程式時,Intune 系統管理員可以輕鬆地將應用程式保護原則部署到受 Intune 管理的應用程式。

注意事項

本指南分成數個不同的階段。 從檢閱 階段 1:規劃整合開始。

階段 6:應用程式組態

階段 Goals

  • 瞭解Android上的應用程式組態選項。
  • 決定您的應用程式應該新增哪些組態。
  • 整合 Intune App SDK 應用程式組態 API。
  • 為您的自定義應用程式組態實作衝突解決邏輯。

Android 上的 應用程式組態

應用程式組態也稱為受控組態或應用程式限制,是應用程式專屬且開發人員定義的設定,您可以新增至您的應用程式,讓系統管理員在受控設定中使用時,能夠對應用程式體驗新增控制權。 例如,如果您的應用程式是瀏覽器,您可以選擇新增設定,讓系統管理員預先設定書籤、封鎖特定網頁,或停用 incognito 模式。 應用程式組態是完全選擇性但功能強大的工具,可增強應用程式的管理體驗。

如需詳細資訊,請參閱應用程式設定原則以取得 Microsoft Intune

Android 的 Built-In 應用程式設定

Android 在平臺中內建應用程式組態,稱為 「Managed 組態」。 這些設定與 Intune App SDK 沒有相依性,而且可以在未整合 Intune App SDK 的應用程式上啟用。 只有當您的應用程式使用在使用 Google 的其中一種 Android Enterprise 模式管理的裝置上時,才會套用這些設定。 如需如何在 Microsoft Intune 中設定這些 Android Enterprise 模式的詳細資訊,請參閱註冊 Android 裝置。 系統管理員可以在 Microsoft Intune 中為受控 Android Enterprise 裝置設定這些應用程式設定原則。

您的應用程式可以透過 Android RestrictionsManager 或透過 Intune App SDK 擷取這些系統管理員設定的值。 如需詳細資訊,請參閱 從 SDK 擷取應用程式 設定。

受控Google Play應用程式的委派範圍

應用程式開發人員可以使用 委派的範圍 來整合其受控Google Play應用程式的增強許可權。 委派的範圍會為受控 Google Play 應用程式提供下列功能:

  • 允許其他應用程式安裝和管理憑證
  • 允許應用程式存取 Android 安全性記錄
  • 允許應用程式存取 Android 網路活動記錄

一旦這些功能已使用 Google 的 API 整合到受控 Google Play 應用程式中,您就可以使用裝置組態設定檔在 Intune 中設定這些設定。 如需詳細資訊,請參閱 Android Enterprise 裝置設定 - 應用程式

如需應用程式實作詳細數據,請參閱 Android 開發人員檔 - 委派範圍

Intune App SDK 應用程式組態

Intune App SDK 支援另一種傳遞應用程式設定的機制,與 Android Enterprise 受控設定不同。 這些設定專屬於 Microsoft Intune,且僅適用於已整合 Intune App SDK 的應用程式。 不過,這些設定不限於具有 Android Enterprise 管理的裝置。 系統管理員可以在 Microsoft Intune 中為受控應用程式設定這些應用程式設定原則。

注意事項

您也可以使用 圖形 API 來設定應用程式設定。 如需詳細資訊,請參閱 MAM 目標設定的 圖形 API 檔

您的應用程式必須透過 Intune App SDK 擷取這些系統管理員設定的值。 如需詳細資訊,請參閱 從 SDK 擷取應用程式 設定。

我應該將哪些設定新增至我的應用程式?

本指南無法為您回答這個問題。 只有您和您的小組知道哪些功能可讓您的應用程式在管理時更有價值。

下列問題可能有助於引導討論,並顯示您可能想要新增至應用程式的設定:

  • 您的應用程式目前提供哪些功能?
    • 在管理下停用這些功能是否有價值?
    • 在管理下變更這些功能是否有價值?
  • 您的應用程式目前如何在管理之下使用?
    • 系統管理員是否可以代表其用戶預先設定任何選項?
    • 系統管理員或終端使用者是否採取任何受控案例專屬的動作?
    • 您的 Managed 使用者是否要求可能不適合整個使用者母體的功能?

針對您決定要新增至應用程式的每個設定,您必須定義三個專案:

  • 索引鍵 - 此字串可從其他設定中唯一識別此設定。 它應該是人類看懂的,因為系統管理員會加以設定。
  • 類型 - 此設定的數據類型為何? 它是字串、布爾值、整數、陣列等等嗎?
  • 衝突解決策略 - 如果系統管理員為相同的金鑰設定多個值,您的應用程式會如何回應? 在上述瀏覽器範例中,書籤清單可能會結合所有值,而停用 incognito 的設定可能會選擇在任何衝突的值為 「true」 時停用。

我的應用程式應該支援受控裝置或受控應用程式的設定嗎?

套用至受管理裝置的設定,以及套用至受控應用程式的設定 ,並不會互斥。 決定要支持的設定類型 (或兩者都) 時,您應該考慮使用者的需求。

組態範圍 受控裝置的組態 Managed Apps 的組態
裝置適用性 僅適用於Android Enterprise裝置管理下的裝置。 適用於所有裝置,只要應用程式整合 Intune App 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 identity = "user@contoso.com"
MAMAppConfig appConfig = configManager.getAppConfig(identity);
String fooValue = appConfig.getStringForKey("foo", MAMAppConfig.StringQueryType.Any);

如果沒有 MAM 註冊的帳戶,但您的應用程式仍然想要擷取 Android Enterprise 設定值 (不會以特定帳戶) 為目標,您可以傳遞 null 或空字串。

注意事項

如果您的應用程式使用 Intune App 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.AnyStringQueryType.MinStringQueryType.Max,其中 min 和 max 來自依字母順序排序的清單。

結束準則

Intune 負責將應用程式設定原則值傳遞給您的應用程式;之後,您的應用程式會負責使用這些值來變更應用程式內的行為或 UI。 完整的端對端測試應該涵蓋這兩個元件。

若要驗證 Intune 是否正確傳遞應用程式設定原則:

  1. 設定以您的應用程式為目標並部署至測試帳戶的應用程式設定原則。
  2. 使用您的測試帳戶登入您的應用程式。
  3. 瀏覽您的應用程式,以練習呼叫 MAMAppConfigManager或的getAppConfiggetFullData每個程式代碼路徑。
    • 記錄呼叫 getAppConfig 的結果是驗證傳遞哪些設定的簡單方式。 不過,因為系統管理員可以輸入應用程式組態設定的任何數據,所以請小心不要記錄任何私人用戶數據。
  4. 請參閱 驗證已套用的應用程式設定原則

因為應用程式組態是應用程式特定的,所以只有您知道如何驗證應用程式應該如何變更每個應用程式組態設定的行為或 UI。

測試時,請考慮下列事項:

  • 使用應用程式支援的每個值建立不同的測試應用程式設定原則,以確保涵蓋所有案例。
  • 針對每個設定建立具有不同值的多個測試應用程式設定原則,以驗證應用程式的衝突解決邏輯。
  • 如果您的應用程式已註冊 REFRESH_APP_CONFIG 通知,請在應用程式使用中時更新應用程式設定原則、等候原則更新,並確認已正確執行此程式碼路徑。
  • 如果您的應用程式支援這兩種類型的應用程式組態,請測試這兩種案例,以確保您的實作為 提供正確的身分識別 getAppConfig

後續步驟

完成上述所有 結束準則 之後,您的應用程式現在已成功與應用程式設定原則整合。

The subsequent section, Stage 7: App Participation Features, may or may not be required, depending on your app's desired app protection policy support. 如果您不確定這些功能是否適用於您的應用程式,請重新流覽 SDK 整合的重要決策