AppGallery Connect Remote-Konfiguration: Erleben Sie Ihre App ohne Probleme

Als App-Entwickler muss Ihre App dem Benutzer möglicherweise neue Inhalte bereitstellen
und Funktionen, um das Interesse zu wecken und das App-Erlebnis individuell anzupassen
jeder braucht, hier kommt die Remote-Konfiguration ins Spiel.

Zusammenfassend lässt sich sagen, dass AppGallery Connect Remote Configuration Folgendes kann:

Ändern Sie Parameter in der Cloud, damit Apps, die auf Geräten installiert sind, hin und wieder Parameteraktualisierungen aus der Cloud erhalten, ohne dass Benutzer die App aktualisieren müssen, und beschleunigen Sie so den Rollout in der App.

Dieser Blog zeigt Ihnen, wie Sie die Remote-Konfiguration verwenden, um die App umzuschalten
Funktionen basierend auf Remote-Setup. Huawei verwendet AppGallery Connect
kann Benutzerattribute und Remote-Einstellungen schnell und einfach anwenden
Parameter aus der Cloud ändern.

Als schneller Vergleich zur üblichen Werkzeugkette der Android-Entwickler. Sie könnten sich AppGallery Connect (AGC) als das Firebase-Äquivalent vorstellen. Wenn ich also über die AGC-Konsole spreche, können Sie das mit der Firebase-Konsole vergleichen. Beide Konsolen haben Zugriff auf Funktionen wie Analysen, Absturzanalysen, Fernkonfiguration, Push-Benachrichtigungen mit Deep-Linking, In-App-Messaging und vieles mehr!.

Wenn Sie Firebase Remote Config verwenden, ist die Huawei AGC Remote Configuration genauso einfach zu verwenden. Wenn Sie Firebase noch nicht verwendet haben, spielt das keine Rolle! AGC Remote Configuration verfügt über eine intuitive und einfache API. das Die für diesen Blogbeitrag geschriebene Beispielanwendung ist hier als Open Source auf GitHub verfügbar.

Niana .. lass .. hol .. sugod na!

Melden Sie sich bei AppGallery Connect an

Das erste, was Sie tun müssen, ist, was Sie tun anmelden und/oder eintragen in AppGallery Connect und bestätigen Sie Ihre Identität (kann bis zu 3 Tage dauern, planen Sie es also ein). Stellen Sie sicher, dass Sie ein Projekt und eine App erstellt haben, die Sie verwenden können. Wenn Sie das noch nicht getan haben, Sie können hier mehr darüber lesen.

Wenn Sie fertig sind, haben Sie wie folgt Zugriff auf die Konsole:

Erstellen Sie Anwendungen mithilfe der Remote-Konfiguration

Wir werden eine Anwendung erstellen, die die Remotekonfiguration verwendet, um zu entscheiden, wie die Benutzeroberfläche gestaltet werden soll. das Die AGC Academy hat hier eine Videoerklärung. Dies ist ein häufiger Fall der Verwendung der Remote-Konfiguration, vielleicht verschieben Sie öfter ganze Funktionen oder ändern die Navigationspfade, um Funktionen ein- und auszuschalten, aber um das Tutorial einfach fortzusetzen, werden wir etwas Text umschalten und die Hintergrundfarbe ändern.

Die App, die Remote Config verwendet, wenn sie abgeschlossen ist.

Durch Remote-Konfiguration Es gibt eine Vielzahl von Funktionen, die verwendet werden können, wie z. B. verschiedene Filter, historische Versionsverwaltung und Echtzeit-Updates.

In der Analytik gibt es sogenannte „Benutzerattribute“, dies sind spezifische Details zu einem Benutzer oder einem Benutzerattribut, die Ihnen helfen, Benutzergruppen zu unterscheiden und zu unterscheiden. AGC Analytics verfügt über ein integriertes Benutzerattribut namens „Land/Region“, mit dem Sie Ihre Benutzer basierend auf der IP-Adresse der Netzwerkhardware gruppieren können, mit der sie zuletzt mit dem Telefon verbunden waren.

Angenommen, Sie haben eine Fußballanwendung, können Sie Fans „aus“ Schottland die schottische Flagge auf Ihrer Benutzeroberfläche auf dem Hauptbildschirm zeigen und Fans aus England die englische Flagge. Es mag einige Fälle geben, in denen IP-Inhalte entlang der Grenze zwischen Schottland und England ein Problem darstellen, aber ein größeres Problem sind Spanier, die Schottland für einen Urlaub besuchen! Wir können dieses Problem mit so genannten benutzerdefinierten Benutzerattributen beheben.

Wenn Sie ein benutzerdefiniertes Benutzerattribut für „Land“ erstellen, können Sie anhand von etwas anderem als der IP bestimmen, woher die Person stammt. In unserer Demo haben wir EditText auf dem Bildschirm und Sie können einen Ländernamen eingeben (im realen Szenario können Sie ihn nicht eingeben, aber vielleicht erkennen Sie ihn an der aktiven SIM-ISO oder dem Gerätesatz Locale oder vielleicht an Ihnen. Der Benutzer kann es aus einer Liste auswählen.

Konfigurieren Sie die Einstellungen der Remote-Konfigurationskonsole

Um dieses benutzerdefinierte Benutzerattribut zu aktivieren, gehen Sie zu AppGallery Connect-Konsole > Huawei Analytics > Benutzereigenschaften und klicken Sie auf „Erstellen“. Sie werden sofort nach einer ID, einem Namen und einer Beschreibung gefragt. Der Name und die Beschreibung sind nur für menschliche Zwecke, die ID wird als Schlüssel verwendet, damit wir dieses Benutzerattribut aus unserer App lesen/schreiben können.

Geben Sie die folgenden Werte ein:

  • ID = “Land”
  • Name = “Land”
  • Description = “Das Land, von dem wir wissen, dass sie sich jetzt befinden.”

So sieht es aus, wenn Sie fertig sind:

Jetzt haben wir unser benutzerdefiniertes Benutzerattribut erstellt. Wir werden dies zum Filtern aus unserer Remote-Konfiguration verwenden.

Gehen Sie wieder zu AppGallery Connect-Konsole > Grow > Remote Configuration, wählen Sie die Registerkarte „Condition“ und drücken Sie dann die Schaltfläche „New Condition“. Sie werden dann nach einer Bedingung und einer Beschreibung gefragt, unten ist eine Dropdown-Liste, in der Sie die zum Filtern zu verwendende Bedingung auswählen können. Geben Sie die folgenden Werte ein:

  • Bedingung = “Land UK”
  • Description = “Wahr, wenn das Benutzerattribut für das Land auf UK eingestellt ist.”
  • Auswahl = „Benutzereigenschaften“ > Land > Messe > „UK“

So sieht es aus, wenn Sie fertig sind:

Klicken Sie auf „Speichern“ und navigieren Sie zurück zur Registerkarte „Parameter“.

Wir werden zwei Parameter erstellen, der erste ist ein standardmäßiger Remote-Konfigurationsumschalter, der auf der Konsole als boolescher Wert auf „true“ oder „false“ gesetzt werden kann. Der zweite kann auch ein boolescher Schalter sein, obwohl wahr oder falsch durch die gerade erstellte Bedingung bestimmt wird.

Drücken Sie die Schaltfläche „Neuer Parameter“, um diese Werte einzustellen. Sie werden dann nach „Parameter“ gefragt, dem Namen des Schlüssels, den wir verwenden, um auf diesen Fernunterdrückungsparameter in unserer App zu verweisen. Ein “Standardwert”, der JSON oder einen beliebigen primitiven Werttyp (z. B. String, Int usw.) abrufen kann. Und eine „Beschreibung“, an die man sich erinnern kann, was es kostet.

Legen Sie für den ersten Funktionsumschalter die folgenden Werte fest:

  • Parameter = “enable_feature_1234_cool” (Versuchen Sie, eine gängige Benennungsmethode zu verwenden.)
  • Standardwert = “false”
  • Description = “True, um Feature 1234 zu aktivieren. Dadurch wird dieses neue Feature aktiviert.”

Legen Sie für den zweiten Funktionsumschalter die folgenden Werte fest:

  • Parameter = “enable_feature_1235_theme” (Versuchen Sie, eine gängige Benennungsmethode zu verwenden.)
  • Standardwert = “false”
  • Description = “True, um Feature 1235 zu aktivieren. Dadurch wird das Theme-Feature aktiviert.”
  • Bedingten Wert hinzufügen> Bedingung = „Land UK“, Wert = „true“

So sieht es aus, wenn Sie fertig sind:

App-Setup und -Start

Nachdem die gesamte Konsolenkonfiguration abgeschlossen ist, können wir mit der Erstellung der Android-App fortfahren! Wenn Sie die AppGallery Connect-Dienste noch nicht zu Ihrer Android-App hinzugefügt haben (indem Sie das Plugin und die JSON-Datei der Dienste hinzufügen), Sie können hier mehr darüber lesen. Sie können dieses Muster erkennen. Dies ist derselbe Vorgang, den Sie ausführen müssen, wenn Sie Firebase zum ersten Mal zu Ihrem Projekt hinzufügen. das zum Beispiel Projekt ist auch auf diese Weise eingerichtet, fügen Sie das agconnect-Plugin hinzu, um JSON-Parsing in Ihrer Konfiguration durchzuführen.

/build.gradle:

buildscript { 
  repositories { 
    ...
    maven {url 'https://developer.huawei.com/repo/'} 
  } 
}

buildscript { 
  dependencies { 
    ...
    classpath 'com.huawei.agconnect:agcp:1.5.2.300'
  } 
}

/app/build.gradle:

dependencies {
  implementation 'com.huawei.agconnect:agconnect-core:1.5.2.300'
  ...

Führen Sie die Remote-Konfiguration in der App durch

Um die Remote-Konfiguration mit Benutzerattributen zu verwenden, müssen Remote-Konfiguration und Hi Analytics als Abhängigkeiten in Ihrem Projekt hinzugefügt werden:

dependencies {
  ...
  implementation 'com.huawei.agconnect:agconnect-remoteconfig:1.5.2.300'
  implementation 'com.huawei.hms:hianalytics:6.0.0.300' 
  ...

Als Nächstes erstellen wir ein Layout, mit dem wir das Benutzerattribut „Land“ anzeigen und bearbeiten können. Wir haben eine TextView hinzugefügt, um den Status unserer 1234-Funktion anzuzeigen, und eine Schaltfläche, um eine Aktualisierung der aktuell abgerufenen Remote-Konfiguration zu erzwingen. Wir stellen sicher, dass die Stammansicht eine ID hat, damit wir die Hintergrundfarbe ändern können.

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/content_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior">

    <TextView
        android:id="@+id/text_explanation"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="This would usually be a value hidden from the user. But for the sake of the demo you can change it here. Refresh the config after changing the value. User country:"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <com.google.android.material.textfield.TextInputLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="User country (try 'Spain' or 'UK'):"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toBottomOf="@id/text_explanation">

        <com.google.android.material.textfield.TextInputEditText
            android:id="@+id/edit_text_one"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Spain" />

    </com.google.android.material.textfield.TextInputLayout>

    <TextView
        android:id="@+id/text_view_one"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <Button
        android:id="@+id/button_one"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="onRefreshConfigClick"
        android:text="Refresh Remote Configuration"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

Das soeben erstellte XML-Layout.

Um die Remote-Konfiguration zu verwenden, benötigen wir ein Beispiel für AGConnectConfig (api doc) und zum Abrufen/Platzieren von Benutzerattributen verwenden wir ein Beispiel für HiAnalyticsInstance (api doc).

private lateinit var config: AGConnectConfig
private lateinit var analytics: HiAnalyticsInstance

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    config = AGConnectConfig.getInstance()
    analytics = HiAnalytics.getInstance(this)
    ...

Wenn die Benutzeroberfläche geladen wird, möchten wir, dass EditText das aktuelle Benutzerattribut Land anzeigt, und wenn die Schaltfläche zum Aktualisieren gedrückt wird, möchten wir das zuletzt eingegebene Land speichern. In der HiAnalyticsInstance-API wird ein Benutzerattribut als Benutzerprofil bezeichnet.

val currentCountry = analytics.getUserProfiles(false)["country"] ?: "Spain"

val editTextOne: EditText = findViewById(R.id.edit_text_one)
val currentCountry = editTextOne.text.toString()
// This sets the custom UserAttribute 'country' we created in the console
analytics.setUserProfile("country", currentCountry)

Wir legen jetzt das Land der Benutzer bei jeder Änderung fest, das heißt, wenn wir die Remote-Konfiguration für “enable_feature_1235_theme” entfernen, wird berücksichtigt, in welchem ​​​​Land sie sich befinden, wenn sie tatsächlich an uns gesendet wird, oder falsch. Im Vergleich, wenn wir “enable_feature_1234_cool” bekommen, wird es immer “false” zurückgeben, weil wir es in der Konsole so eingestellt haben, dass es klar ist. So können Sie mit Remote Configuration dieselben booleschen Werte erhalten:

val enableFeature = config.getValueAsBoolean("enable_feature_1234_cool")
val textView: TextView = findViewById(R.id.text_view_one)
if (enableFeature) {
    textView.text = "Feature Enabled! (Go to the console to toggle this)"
} else {
    textView.text = "Feature Disabled! (Go to the console to toggle this)"
}

val enableFeature1235 = config.getValueAsBoolean("enable_feature_1235_theme")
val contentMain: ViewGroup = findViewById(R.id.content_main)
if (enableFeature1235) {
 contentMain.setBackgroundColor(Color.parseColor("#22FF0000"))
 Toast.makeText(this, "Welcome to the UK!", Toast.LENGTH_SHORT).show()
} else {
 contentMain.setBackgroundColor(Color.parseColor("#2200FF00"))
 Toast.makeText(this, "Goodbye!", Toast.LENGTH_SHORT).show()
}

Schließlich erzwingen wir die Aktualisierung der Remote-Konfiguration, wenn die Schaltfläche gedrückt wird. Dies ist normalerweise in einer Produktions-App nicht erforderlich, da Sie eine angemessene Aktualisierungszeit haben und die Bibliothek automatisch nach Updates für diese Konfiguration sucht. Aber zu Demonstrationszwecken möchten wir eine Aktualisierung erzwingen, damit wir sehen können, welche Auswirkungen die Änderung auf das Land haben wird.

config.fetch(0) // a value of 0 here is for DEBUGGING ONLY, delete for prod (giving a 12 hour refresh period)
    .addOnSuccessListener {
        config.apply(it)
        Log.d(TAG, "Applied")
        updateUIBasedOnRemoteConfig()
    }

Fazit

Mao na! Der gesamte Code, den Sie oben sehen, ist hier auf GitHub verfügbar. Sie verwenden die AppGallery Connect-Konsole bereits zum Erstellen einer Remote-Konfiguration, die benutzerdefinierte Benutzerattribute berücksichtigt, und verwenden sie zum Ein- und Ausschalten von Funktionen in Ihrer Anwendung. Es unterstützt die SDK-Integration mit nur wenigen Codezeilen, Sie können einfach auf den Dienst zugreifen.

Darüber hinaus sind AppGallery Connect-Dienste für Android, Web,
und schnelle Apps mit einem plattformübergreifenden Framework, einschließlich Flutter,
Cordova und React Native.

Vollständiger Offenlegungshinweis: Ich habe diesen Beitrag in Zusammenarbeit mit Huawei geschrieben und sie freuen sich, dies bekannt zu geben AppGallery Connect Academy und fördern die Verwendung von Verbinden mit AppGallery.

Huawei AppGallery Connect hat eine Trainingsakademie hier, mit Material, das als schriftliche Artikel, Dokumente sowie Videoerklärungen verfügbar ist, um Ihnen zu helfen, die guten Teile zu verstehen. Es gibt viele weitere, darunter AB-Tests, In-App-Messaging, App-Deep-Linking und viele weitere Möglichkeiten zur Verwendung der Remote-Konfiguration.

Leave a Reply

Your email address will not be published. Required fields are marked *