Intune App SDK för Android – Appkonfiguration

Med Microsoft Intune App SDK för Android kan du införliva Intune-appskyddsprinciper (även kallade APP- eller MAM-principer ) i din interna Java/Kotlin Android-app. Ett Intune-hanterat program är ett program som är integrerat med Intune App SDK. Intune-administratörer kan enkelt distribuera appskyddsprinciper till din Intune-hanterade app när Intune aktivt hanterar appen.

Obs!

Den här guiden är uppdelad i flera olika steg. Börja med att granska steg 1: Planera integreringen.

Steg 6: Appkonfiguration

Etappmål

  • Läs mer om konfigurationsalternativ för program på Android.
  • Bestäm vilka konfigurationer, om sådana finns, som programmet ska lägga till.
  • Integrera API:erna för Intune App SDK-programkonfiguration.
  • Implementera konfliktlösningslogik för dina anpassade programkonfigurationer.

Appkonfiguration på Android

Programkonfigurationer, som även kallas hanterade konfigurationer eller programbegränsningar, är programspecifika och utvecklardefinierade inställningar som du kan lägga till i din app för att ge administratörer ytterligare kontroll över appupplevelsen när de används i en hanterad inställning. Om din app till exempel är en webbläsare kan du välja att lägga till konfigurationer som gör att administratörer kan förinställa bokmärken, blockera vissa webbsidor eller inaktivera inkognitolägen. Programkonfiguration är ett helt valfritt men kraftfullt verktyg för att förbättra appens hanteringsupplevelse.

Mer information finns i Appkonfigurationsprinciper för Microsoft Intune .

Androids Built-In-appkonfigurationer

Android har en inbyggd appkonfiguration på plattformen, som kallas hanterade konfigurationer. Dessa konfigurationer är inte beroende av Intune App SDK och kan aktiveras för appar som inte integrerar Intune App SDK. Dessa konfigurationer gäller endast när ditt program används på en enhet som hanteras med något av Googles Android Enterprise-lägen. Mer information om hur du konfigurerar dessa Android Enterprise-lägen i Microsoft Intune finns i Registrera Android-enheter . Administratörer kan konfigurera dessa programkonfigurationsprinciper för hanterade Android Enterprise-enheter i Microsoft Intune.

Din app kan hämta dessa administratörskonfigurerade värden antingen via Android RestrictionsManager eller via Intune App SDK. Mer information finns i Hämta appkonfiguration från SDK .

Delegerade omfång för hanterade Google Play-appar

Apputvecklare kan använda delegerade omfång för att integrera utökade behörigheter för sina hanterade Google Play-appar. Delegerade omfång tillhandahåller följande funktioner för hanterade Google Play-appar:

  • Tillåt att andra appar installerar och hanterar certifikat
  • Tillåt att appen får åtkomst till Android-säkerhetsloggar
  • Tillåt att appen får åtkomst till Android-nätverksaktivitetsloggar

När dessa funktioner har integrerats i en hanterad Google Play-app med Googles API kan du konfigurera dessa inställningar i Intune med hjälp av enhetskonfigurationsprofiler. Mer information finns i Enhetsinställningar för Android Enterprise – Program.

Information om appimplementering finns i Dokumentation om Android-utvecklare – Delegeringsomfång.

Appkonfigurationer för Intune App SDK

Intune App SDK stöder en annan mekanism för att leverera appkonfigurationer, separat från Hanterade Android Enterprise-konfigurationer. Dessa konfigurationer är exklusiva för Microsoft Intune och gäller endast för appar som har integrerat Intune App SDK. Dessa konfigurationer är dock inte begränsade till enheter med Android Enterprise-hantering. Administratörer kan konfigurera dessa programkonfigurationsprinciper för hanterade appar i Microsoft Intune.

Obs!

Appkonfiguration kan också konfigureras med graph-API:et. Mer information finns i Graph API-dokumentationen för MAM Targeted Config.

Appen måste hämta dessa administratörskonfigurerade värden via Intune App SDK. Mer information finns i Hämta appkonfiguration från SDK .

Vilka konfigurationer ska jag lägga till i min app?

Den här guiden kan inte besvara den här frågan åt dig. Det är bara du och ditt team som vet vilka funktioner som gör din app mer värdefull när den hanteras.

Följande frågor kan hjälpa dig att vägleda diskussioner och visa konfigurationer som du kanske vill lägga till i din app:

  • Vilka funktioner erbjuder din app idag?
    • Finns det något värde i att inaktivera någon av dessa funktioner under hanteringen?
    • Finns det något värde i att ändra någon av dessa funktioner under hanteringen?
  • Hur används din app under hantering i dag?
    • Finns det några alternativ som administratörer kan förkonfigurera för sina användares räkning?
    • Finns det några åtgärder som administratörer eller slutanvändare vidtar, exklusive hanterade scenarier?
    • Har dina hanterade användare begärt funktioner som kanske inte är lämpliga för hela användarpopulationen?

För varje konfiguration som du bestämmer dig för att lägga till i din app måste du definiera tre objekt:

  • Nyckel – den här strängen identifierar den här inställningen unikt från andra inställningar. Den bör vara läsbar för människor, eftersom den konfigureras av administratörer.
  • Typ – vilken datatyp är den här inställningen? Är det en sträng, booleskt, heltal, matris osv.?
  • Strategi för konfliktlösning – hur svarar din app om administratörer konfigurerar flera värden för samma nyckel? I det ovan nämnda webbläsarexemplet kan en bokmärkeslista kombinera alla värden, medan en inställning för att inaktivera inkognito kan välja att inaktivera om något av de motstridiga värdena är "sant".

Ska min app ha stöd för konfiguration för hanterade enheter eller hanterade appar?

Konfigurationer som gäller för hanterade enheter och konfigurationer som gäller för hanterade appar utesluter inte varandra. Du bör ta hänsyn till användarnas behov när du bestämmer vilken typ (eller båda) av konfigurationen som ska stödjas.

Konfigurationsområde Konfiguration för hanterade enheter Konfiguration för hanterade appar
Enhets tillämplighet Gäller endast på enheter under Android Enterprise-enhetshantering. Gäller för alla enheter, så länge appen integrerar Intune App SDK och företagsportalen är installerad.
Plattform Endast Android, begränsat till enheter med Google-tjänster iOS App SDK stöder samma konfigurationer. Som utvecklare kan du dela dessa nycklar för en konsekvent plattformsoberoende upplevelse.
Tillämplighet Valfri EMM Exklusivt för Microsoft Intune
Schemaidentifiering Schemat är offentligt tillgängligt efter appuppladdning till Play Schemaidentifiering under utvecklarkontroll

Båda typerna av appkonfiguration är beroende av nyckel/värde-par. Microsoft Intune inspekterar inte innehållet i dessa konfigurationer och skickar helt enkelt de administratörskonfigurerade värdena till din app.

Intune App SDK-appkonfigurations-API:et innehåller administratörskonfigurerade värden från båda kanalerna. Om din app stöder båda typerna av appkonfiguration använder du API:et enligt beskrivningen nedan.

Hämtar appkonfiguration från SDK

Program kan ta emot konfigurationer från båda kanalerna med hjälp av MAMAppConfigManager - och MAMAppConfig-klasserna .

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

Om det inte finns något MAM-registrerat konto, men din app fortfarande vill hämta Android Enterprise-konfigurationsvärden (som inte kommer att riktas mot ett specifikt konto), kan du skicka en null eller en tom sträng för OID.

Obs!

Om din app använder Intune App SDK för att hämta hanterade Android Enterprise-konfigurationer och företagsportalen inte är installerad levereras dessa konfigurationer via en MAMUserNotification med en tom identitet.

Din app kan också begära rådata som en lista över uppsättningar nyckel/värde-par, i stället för att fråga efter specifika nycklar.

List<Map<String, String>> getFullData()

Din app kan också registrera sig för meddelandet REFRESH_APP_CONFIG som informerar appen om att nya appkonfigurationsdata är tillgängliga. Om appen cachelagrar appkonfigurationsdata måste den registrera sig för det här meddelandet och ogiltigförklara cachelagrade data i hanteraren. Mer information finns i Registrera för meddelanden från SDK .

Lösa konflikter

Om flera appkonfigurationsprinciper är riktade till samma app och konto kan det finnas flera motstridiga värden tillgängliga för samma nyckel.

Obs!

Ett värde som anges i MAM-appkonfigurationen åsidosätter ett värde med samma nyckel som angetts i Android Enterprise-konfigurationen.

Om en administratör konfigurerar motstridiga värden för samma nyckel har Intune inget sätt att lösa konflikten automatiskt och gör alla värden tillgängliga för din app. Den här typen av konflikt kan inträffa om administratören riktar in sig på olika appkonfigurationsuppsättningar med samma nyckel till flera grupper som innehåller samma konto.

Din app kan begära alla värden för en viss nyckel från ett MAMAppConfig-objekt , så att du kan lösa konflikter med din egen affärslogik:

List<Boolean> getAllBooleansForKey(String key)
List<Long> getAllIntegersForKey(final String key)
List<Double> getAllDoublesForKey(final String key)
List<String> getAllStringsForKey(final String key)

Alternativt kan du begära att ett värde väljs med någon av de inbyggda konfliktlösningsstrategierna:

Boolean getBooleanForKey(String key, BooleanQueryType queryType)
Long getIntegerForKey(String key, NumberQueryType queryType)
Double getDoubleForKey(String key, NumberQueryType queryType)
String getStringForKey(String key, StringQueryType queryType)

De tillgängliga inbyggda strategierna för konfliktlösning är:

  • BooleanQueryType.Any, BooleanQueryType.And, BooleanQueryType.Or
  • NumberQueryType.Any, NumberQueryType.Min, NumberQueryType.Max
  • StringQueryType.Any, StringQueryType.Min, , StringQueryType.Maxdär min och max kommer från en alfabetiskt ordnad lista.

Avslutsvillkor

Intune ansvarar för att leverera appkonfigurationsprincipvärdena till din app. efteråt ansvarar appen för att använda dessa värden för att ändra beteende eller användargränssnitt i appen. Noggrann testning från slutpunkt till slutpunkt bör omfatta båda komponenterna.

Så här verifierar du att Intune levererar en appkonfigurationsprincip korrekt:

  1. Konfigurera en appkonfigurationsprincip som är riktad mot din app och distribuerad till ditt testkonto.
  2. Logga in på din app med ditt testkonto.
  3. Navigera genom din app för att träna varje kodsökväg som anropar MAMAppConfigManager's getAppConfigForOID eller getFullData.
    • Att logga resultatet av anrop till getAppConfigForOID är ett enkelt sätt att verifiera vilka inställningar som levereras. Men eftersom administratörer kan ange data för appkonfigurationsinställningar bör du vara noga med att inte logga några privata användardata.
  4. Se Verifiera den tillämpade appkonfigurationsprincipen.

Eftersom appkonfigurationer är appspecifika är det bara du som vet hur appen ska ändra beteende eller användargränssnitt för varje appkonfigurationsinställning.

Tänk på följande när du testar:

  • Se till att alla scenarier omfattas av att skapa olika konfigurationsprinciper för testappar med varje värde som din app stöder.
  • Verifiera appens konfliktlösningslogik genom att skapa flera konfigurationsprinciper för testappen med olika värden för varje inställning.
  • Om din app har registrerats för REFRESH_APP_CONFIG meddelandet uppdaterar du appkonfigurationsprincipen medan appen används aktivt, väntar på att principen ska uppdateras och bekräftar att den här kodökvägen är korrekt tränad.
  • Om din app stöder båda typerna av appkonfiguration testar du båda scenarierna för att säkerställa att implementeringen ger rätt identitet till getAppConfigForOID.

Nästa steg

När du har slutfört alla avslutsvillkor ovan är appen nu integrerad som med appkonfigurationsprincipen.

Följande avsnitt, steg 7: Funktioner för appdeltagande, kan behövas eller inte, beroende på appens önskade stöd för appskyddsprinciper. Om du är osäker på om någon av dessa funktioner gäller för din app kan du gå tillbaka till Viktiga beslut för SDK-integrering.