Megosztás a következőn keresztül:


Leküldéses értesítések hozzáadása androidos alkalmazáshoz

Áttekintés

Ebben az oktatóanyagban leküldéses értesítéseket ad hozzá az Android gyors üzembe helyezési projekthez, hogy a rendszer minden rekord beszúrásakor leküldéses értesítést küldjön az eszközre.

Ha nem a letöltött gyors üzembe helyezési kiszolgálóprojektet használja, szüksége lesz a leküldéses értesítési bővítménycsomagra. További információ: Az Azure Mobile Appshez készült .NET háttérkiszolgálóI SDK használata.

Előfeltételek

A következőkre lesz szüksége:

  • Ide, a projekt háttérrendszerétől függően:

  • Android 2.3 vagy újabb, a Google-adattár 27- vagy újabb verziója, valamint a Google Play Services 9.0.2-s vagy újabb verziója a Firebase Cloud Messaginghez.

  • Végezze el az Android gyors üzembe helyezését.

A Firebase Cloud Messaginget támogató projekt létrehozása

  1. Jelentkezzen be a Firebase konzoljába. Hozzon létre egy új Firebase-projektet, ha nem rendelkezik még ilyennel.

  2. A projekt létrehozása után válassza az Add Firebase to your Android app (A Firebase hozzáadása az Android-alkalmazáshoz) lehetőséget.

    Firebase hozzáadása Android-alkalmazáshoz

  3. A Firebase hozzáadása az Android-alkalmazáshoz lapon hajtsa végre a következő lépéseket:

    1. Android-csomagnév esetén másolja az applicationId értékét az alkalmazás build.gradle fájljában. Ebben a példában ez a következő com.fabrikam.fcmtutorial1app: .

      Adja meg a csomag nevét

    2. Válassza az Alkalmazás regisztrálása lehetőséget.

  4. Válassza a Google-services.json letöltése lehetőséget, mentse a fájlt a projekt alkalmazásmappájába , majd válassza a Tovább gombot.

    A google-services.json fájl letöltése

  5. Végezze el a következő konfigurációs módosításokat a projekten az Android Studióban.

    1. A projektszintű build.gradle fájlban (<project>/build.gradle) adja hozzá a következő utasítást a függőségek szakaszhoz.

      classpath 'com.google.gms:google-services:4.0.1'
      
    2. Az alkalmazásszintű build.gradle fájlban (<project>/<app-module>/build.gradle) adja hozzá a következő utasításokat a függőségek szakaszhoz.

      implementation 'com.google.firebase:firebase-core:16.0.8'
      implementation 'com.google.firebase:firebase-messaging:17.3.4'
      
    3. Adja hozzá a következő sort az alkalmazásszintű build.gradle fájl végéhez a függőségek szakasz után.

      apply plugin: 'com.google.gms.google-services'
      
    4. Válassza a Szinkronizálás gombot az eszköztáron.

      build.gradle konfigurációs módosítások

  6. Kattintson a Tovább gombra.

  7. Válassza a Lépés kihagyása lehetőséget.

    Az utolsó lépés kihagyása

  8. A Firebase konzolján kattintson a projektjéhez tartozó fogaskerékre. Ezután kattintson a Project Settings (Projektbeállítások) elemre.

    A projektbeállítások kiválasztása

  9. Ha még nem töltötte le a google-services.json fájlt az Android Studio-projekt alkalmazásmappájába , ezt ezen az oldalon teheti meg.

  10. Váltson a felső Cloud Messaging (Felhőbeli üzenetkezelés ) lapra.

  11. Másolja és mentse a kiszolgálókulcsot későbbi használatra. Ezzel az értékkel konfigurálhatja a központot.

Értesítési központ konfigurálása

A Azure App Service Mobile Apps funkciója az Azure Notification Hubs használatával küld leküldéseket, ezért egy értesítési központot fog konfigurálni a mobilalkalmazáshoz.

  1. A Azure Portal nyissa meg az App Servicest, majd válassza ki az alkalmazás háttérrendszerét. A Beállítások területen válassza a Leküldés lehetőséget.

  2. Ha értesítési központ-erőforrást szeretne hozzáadni az alkalmazáshoz, válassza a Csatlakozás lehetőséget. Létrehozhat egy központot, vagy csatlakozhat egy meglévőhöz.

    Központ konfigurálása

Most már csatlakoztatott egy értesítési központot a Mobile Apps háttérprojektjéhez. Később úgy konfigurálja ezt az értesítési központot, hogy egy platformértesítési rendszerhez (PNS) csatlakozzon az eszközökre való leküldéshez.

Az Azure konfigurálása leküldéses értesítések küldésére

  1. A Azure Portal kattintson az Összes >App Servicestallózásaelemre, majd a Mobile Apps háttéralkalmazására. A Beállítások területen kattintson a App Service Leküldés elemre, majd az értesítési központ nevére.

  2. Nyissa meg a Google-t (GCM), adja meg a Firebase-ből az előző eljárásban beszerzett kiszolgálókulcs-értéket , majd kattintson a Mentés gombra.

    Az API-kulcs beállítása a portálon

A Mobile Apps háttérrendszere mostantól a Firebase Cloud Messaging használatára van konfigurálva. Ez lehetővé teszi, hogy leküldéses értesítéseket küldjön az Android-eszközön futó alkalmazásnak az értesítési központ használatával.

Leküldéses értesítések engedélyezése a kiszolgálóprojekthez

Használja a háttérprojekt típusának megfelelő eljárást – akár a .NET-háttérrendszert , akárNode.js háttérrendszert.

.NET-háttérprojekt

  1. A Visual Studióban kattintson a jobb gombbal a kiszolgálóprojektre, és válassza a Manage NuGet Packages (NuGet-csomagok kezelése) parancsot. Keresse meg Microsoft.Azure.NotificationHubs, majd kattintson a Telepítés gombra. Ezzel telepíti a Notification Hubs ügyféloldali kódtárát.

  2. A Controllers mappában nyissa meg a TodoItemController.cs fájlt, és adja hozzá a következő using utasításokat:

    using Microsoft.Azure.Mobile.Server.Config;
    using Microsoft.Azure.NotificationHubs;
    
  3. Cserélje le az PostTodoItem metódust az alábbi kódra:

    public async Task<IHttpActionResult> PostTodoItem(TodoItem item)
    {
        TodoItem current = await InsertAsync(item);
        // Get the settings for the server project.
        HttpConfiguration config = this.Configuration;
    
        MobileAppSettingsDictionary settings =
            this.Configuration.GetMobileAppSettingsProvider().GetMobileAppSettings();
    
        // Get the Notification Hubs credentials for the Mobile App.
        string notificationHubName = settings.NotificationHubName;
        string notificationHubConnection = settings
            .Connections[MobileAppSettingsKeys.NotificationHubConnectionString].ConnectionString;
    
        // Create a new Notification Hub client.
        NotificationHubClient hub = NotificationHubClient
        .CreateClientFromConnectionString(notificationHubConnection, notificationHubName);
    
        // Android payload
        var androidNotificationPayload = "{ \"data\" : {\"message\":\"" + item.Text + "\"}}";
    
        try
        {
            // Send the push notification and log the results.
            var result = await hub.SendGcmNativeNotificationAsync(androidNotificationPayload);
    
            // Write the success result to the logs.
            config.Services.GetTraceWriter().Info(result.State.ToString());
        }
        catch (System.Exception ex)
        {
            // Write the failure result to the logs.
            config.Services.GetTraceWriter()
                .Error(ex.Message, null, "Push.SendAsync Error");
        }
        return CreatedAtRoute("Tables", new { id = current.Id }, current);
    }
    
  4. Tegye közzé újra a kiszolgálóprojektet.

Node.js háttérprojekt

  1. Állítsa be a háttérprojektet.

  2. Cserélje le a todoitem.js fájlban lévő kódot a következőre:

    var azureMobileApps = require('azure-mobile-apps'),
    promises = require('azure-mobile-apps/src/utilities/promises'),
    logger = require('azure-mobile-apps/src/logger');
    
    var table = azureMobileApps.table();
    
    table.insert(function (context) {
    // For more information about the Notification Hubs JavaScript SDK,
    // see https://aka.ms/nodejshubs
    logger.info('Running TodoItem.insert');
    
    // Define the GCM payload.
    var payload = {
        "data": {
            "message": context.item.text
        }
    };
    
    // Execute the insert.  The insert returns the results as a Promise,
    // Do the push as a post-execute action within the promise flow.
    return context.execute()
        .then(function (results) {
            // Only do the push if configured
            if (context.push) {
                // Send a GCM native notification.
                context.push.gcm.send(null, payload, function (error) {
                    if (error) {
                        logger.error('Error while sending push notification: ', error);
                    } else {
                        logger.info('Push notification sent successfully!');
                    }
                });
            }
            // Don't forget to return the results from the context.execute()
            return results;
        })
        .catch(function (error) {
            logger.error('Error while running context.execute: ', error);
        });
    });
    
    module.exports = table;
    

    Ez egy GCM-értesítést küld, amely tartalmazza az item.text szöveget egy új teendőelem beszúrásakor.

  3. Amikor a helyi számítógépen szerkeszti a fájlt, tegye közzé újra a kiszolgálóprojektet.

Leküldéses értesítések hozzáadása az alkalmazáshoz

Ebben a szakaszban frissíti az androidos ügyfélalkalmazást a leküldéses értesítések kezeléséhez.

Az Android SDK verziójának ellenőrzése

A folyamatban lévő fejlesztés miatt előfordulhat, hogy az Android Studio-ban telepített Android SDK-verzió nem egyezik meg a kódban szereplő verzióval. Az ebben az oktatóanyagban hivatkozott Android SDK a 26-os verzió, amely az íráskor legújabb. A verziószám az SDK új kiadásainak megjelenésekor növekedhet, és azt javasoljuk, hogy a legújabb elérhető verziót használja.

A verzióeltérés két tünete:

  • A projekt létrehozásakor vagy újraépítésekor Gradle-hibaüzenetek jelenhetnek meg, például Gradle sync failed: Failed to find target with hash string 'android-XX'.
  • A kódban szereplő, utasítások alapján import feloldandó szabványos Android-objektumok hibaüzeneteket generálhatnak.

Ha ezek bármelyike megjelenik, előfordulhat, hogy az Android SDK Android Studióban telepített verziója nem egyezik meg a letöltött projekt SDK-céljával. A verzió ellenőrzéséhez végezze el a következő módosításokat:

  1. Az Android Studióban kattintson az Eszközök Android>>SDK-kezelő elemre. Ha még nem telepítette az SDK platform legújabb verzióját, kattintson a telepítéshez. Jegyezze fel a verziószámot.

  2. A Project Explorer lap Gradle-szkriptek területén nyissa meg a build.gradle fájlt (Modul: alkalmazás). Győződjön meg arról, hogy a compileSdkVersion és a targetSdkVersion a legújabb telepített SDK-verzióra van beállítva. A build.gradle következőhöz hasonló lehet:

    android {
        compileSdkVersion 26
        defaultConfig {
            targetSdkVersion 26
        }
    }
    

A következő lépés a Google Play-szolgáltatások telepítése. A Firebase Cloud Messaging minimális API-szintű követelményekkel rendelkezik a fejlesztéshez és teszteléshez, amelyeknek meg kell felelniük a jegyzékfájl minSdkVersion tulajdonságának.

Ha régebbi eszközzel tesztel, tekintse meg az Add Firebase to Your Android Project (A Firebase hozzáadása az Android-projekthez ) című témakört, és állapítsa meg, hogy milyen alacsonyan állíthatja be ezt az értéket, és állítsa be megfelelően.

Firebase Cloud Messaging hozzáadása a projekthez

  1. Firebase hozzáadása androidos projekthez

  2. Az Android Studióban válassza a Fájlprojekt>struktúrája lehetőséget. Válassza az Értesítések lehetőséget, válassza a Firebase Cloud Messaging lehetőséget, majd kattintson az OK gombra.

Kód hozzáadása

  1. Nyissa meg a fájlt AndroidManifest.xmlaz alkalmazásprojektben. Adja hozzá a következő kódot a application nyitó címke után:

    <service android:name=".ToDoMessagingService">
        <intent-filter>
            <action android:name="com.google.firebase.MESSAGING_EVENT"/>
        </intent-filter>
    </service>
    <service android:name=".ToDoInstanceIdService">
        <intent-filter>
            <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
        </intent-filter>
    </service>
    
  2. Nyissa meg a fájlt ToDoActivity.java, és végezze el a következő módosításokat:

    • Adja hozzá az importálási utasítást:

      import com.google.firebase.iid.FirebaseInstanceId;
      
    • Módosítsa a definíciót MobileServiceClientprivátról privátstatikusra, így most így néz ki:

      private static MobileServiceClient mClient;
      
    • Metódus hozzáadása registerPush :

      public static void registerPush() {
          final String token = FirebaseInstanceId.getInstance().getToken();
          if (token != null) {
              new AsyncTask<Void, Void, Void>() {
                  protected Void doInBackground(Void... params) {
                      mClient.getPush().register(token);
                      return null;
                  }
              }.execute();
          }
      }
      
    • Frissítse az osztály onCreate metódusát ToDoActivity . A példányosítás után mindenképpen adja hozzá ezt a MobileServiceClient kódot.

      registerPush();
      
  3. Adjon hozzá egy új osztályt az értesítések kezeléséhez. A Project Explorerben nyissa meg az alkalmazás>java-projekt-névtér> csomópontjait, és kattintson a jobb gombbal a csomagnév-csomópontra. Kattintson az Új, majd a Java-osztály elemre. Írja be a Név mezőbe ToDoMessagingService, majd kattintson az OK gombra. Ezután cserélje le az osztálydeklarációt a következőre:

    import android.app.Notification;
    import android.app.NotificationManager;
    import android.app.PendingIntent;
    import android.content.Context;
    import android.content.Intent;
    
    import com.google.firebase.messaging.FirebaseMessagingService;
    import com.google.firebase.messaging.RemoteMessage;
    
    public class ToDoMessagingService extends FirebaseMessagingService {
    
        private static final int NOTIFICATION_ID = 1;
    
        @Override
        public void onMessageReceived(RemoteMessage remoteMessage) {
            String message = remoteMessage.getData().get("message");
            if (message != null) {
                sendNotification("Notification Hub Demo", message);
            }
        }
    
        private void sendNotification(String title, String messageBody) {
            PendingIntent contentIntent = PendingIntent.getActivity(this, 0, new Intent(this, ToDoActivity.class), 0);
            Notification.Builder notificationBuilder = new Notification.Builder(this)
                    .setSmallIcon(R.drawable.ic_launcher)
                    .setContentTitle(title)
                    .setContentText(messageBody)
                    .setContentIntent(contentIntent);
            NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
            if (notificationManager != null) {
                notificationManager.notify(NOTIFICATION_ID, notificationBuilder.build());
            }
        }
    }
    
  4. Adjon hozzá egy másik osztályt a jogkivonat-frissítések kezeléséhez. Hozza létre ToDoInstanceIdService a Java-osztályt, és cserélje le az osztálydeklarációt a következőre:

    import com.google.firebase.iid.FirebaseInstanceIdService;
    
    public class ToDoInstanceIdService extends FirebaseInstanceIdService {
    
        @Override
        public void onTokenRefresh() {
            ToDoActivity.registerPush();
        }
    }
    

Az alkalmazás most már frissül, hogy támogassa a leküldéses értesítéseket.

Az alkalmazás tesztelése a közzétett mobilszolgáltatással

Az alkalmazást tesztelheti úgy, hogy közvetlenül csatlakoztat egy Android-telefont EGY USB-kábellel, vagy egy virtuális eszközt használ az emulátorban.

Következő lépések

Most, hogy elvégezte ezt az oktatóanyagot, folytassa az alábbi oktatóanyagok egyikével: