Kurz: Odesílání nabízených oznámení do aplikací Xamarin.Android pomocí Notification Hubs

Přehled

Poznámka:

Informace o vyřazení a migraci služby Firebase Cloud Messaging najdete v tématu Migrace služby Google Firebase Cloud Messaging.

V tomto kurzu zjistíte, jak používat Azure Notification Hubs k odesílání nabízených oznámení do aplikace systému Xamarin.Android. Vytvoříte prázdnou aplikaci pro Xamarin.Android, která přijímá nabízená oznámení ze služby Firebase Cloud Messaging (FCM). Centrum oznámení použijete k vysílání nabízených oznámení do všech zařízení, na kterých běží vaše aplikace. Dokončený kód je k dispozici v ukázce aplikace NotificationHubs.

V tomto kurzu provedete následující kroky:

  • Vytvoříte projekt Firebase a povolíte službu Firebase Cloud Messaging
  • Vytvořit centrum oznámení
  • Vytvoříte aplikaci pro Xamarin.Android a připojíte ji k centru oznámení
  • Odešlete z webu Azure Portal zkušební oznámení

Požadavky

Vytvoříte projekt Firebase a povolíte službu Firebase Cloud Messaging

  1. Přihlaste se ke konzole Firebase. Vytvořte nový projekt Firebase, pokud jej ještě nemáte.

  2. Po vytvoření projektu vyberte Add Firebase to your Android app (Přidat Firebase do aplikace pro Android).

    Add Firebase to your Android app

  3. Na stránce Přidat Firebase na stránku aplikace pro Android proveďte následující kroky:

    1. Jako název balíčku pro Android zadejte název balíčku. Například: tutorials.tutoria1.xamarinfcmapp.

      Specify the package name

    2. Vyberte Zaregistrovat aplikaci.

    3. Vyberte Stáhnout google-services.json. Potom soubor uložte do složky projektu a vyberte Další. Pokud jste projekt sady Visual Studio ještě nevytvořili, můžete tento krok provést po vytvoření projektu.

      Download google-services.json

    4. Vyberte Další.

    5. Vyberte Přeskočit tento krok.

      Skip the last step

  4. V konzole Firebase vyberte kolečko pro váš projekt. Potom vyberte Project Settings (Nastavení projektu).

    Select Project Settings

  5. Pokud jste si soubor google-services.json nestáhli, můžete si ho stáhnout na této stránce.

    Download google-services.json from the General tab

  6. V horní části přepněte na kartu Cloudové zasílání zpráv . Zkopírujte a uložte klíč serveru pro pozdější použití. Tuto hodnotu použijete ke konfiguraci centra oznámení.

    Copy server key

Vytvořit centrum oznámení

  1. Přihlaste se k portálu Azure.

  2. V nabídce vlevo vyberte Všechny služby . A screenshot showing select All Services for an existing namespace.

  3. Do textového pole Filtrovat služby zadejte Notification Hubs. Výběrem ikony hvězdičky vedle názvu služby přidejte službu do oddílu OBLÍBENÉ V levé nabídce. Vyberte Notification Hubs.

    A screenshot showing how to filter for notification hubs.

  4. Na stránce Notification Hubs vyberte vytvořit na panelu nástrojů.

    A screenshot showing how to create a new notification hub.

  5. Na kartě Základy na stránce Centra oznámení proveďte následující kroky:

    1. V předplatném vyberte název předplatného Azure, které chcete použít, a pak vyberte existující skupinu prostředků nebo vytvořte novou.

    2. Do podrobností oboru názvů zadejte jedinečný název nového oboru názvů.

    3. Obor názvů obsahuje jedno nebo více center oznámení, proto do podrobností centra oznámení zadejte název centra.

    4. V rozevíracím seznamu Umístění vyberte hodnotu. Tato hodnota určuje umístění, ve kterém chcete centrum vytvořit.

      Screenshot showing notification hub details.

    5. Zkontrolujte možnost Zóny dostupnosti. Pokud jste vybrali oblast, která má zóny dostupnosti, je ve výchozím nastavení zaškrtnuté políčko. Zóny dostupnosti je placená funkce, takže do vaší úrovně se přidá další poplatek.

    6. Zvolte možnost zotavení po havárii: Žádná, Spárovaná oblast obnovení nebo Flexibilní oblast obnovení. Pokud zvolíte spárovanou oblast obnovení, zobrazí se oblast převzetí služeb při selhání. Pokud vyberete flexibilní oblast obnovení, vyberte si z rozevíracího seznamu oblastí obnovení.

      Screenshot showing availability zone details.

    7. Vyberte Vytvořit.

  6. Po dokončení nasazení vyberte Přejít k prostředku.

Konfigurace nastavení GCM/FCM pro centrum oznámení

  1. V části Nastavení v nabídce vlevo vyberte Google (GCM/FCM)/.

  2. Zadejte klíč serveru, který jste si poznamenali z konzoly Google Firebase Console.

  3. Na panelu nástrojů vyberte Uložit.

    Screenshot of Notification Hub in Azure Portal with Google G C M F C M option highlighted and outlined in red.

Vaše centrum oznámení je nakonfigurováno pro práci se službou FCM. Zároveň máte připojovací řetězce, pomocí kterých můžete svou aplikaci zaregistrovat pro příjem oznámení a odesílání nabízených oznámení.

Vytvoření aplikace Xamarin.Android a jeho připojení k centru oznámení

Vytvoření projektu sady Visual Studio a přidání balíčků NuGet

Poznámka:

Kroky popsané v tomto kurzu jsou určené pro Visual Studio 2017.

  1. V sadě Visual Studio otevřete nabídku Soubor , vyberte Nový a pak vyberte Projekt. V okně Nový projekt proveďte tyto kroky:

    1. Rozbalte položku Nainstalováno, Visual C# a potom klikněte na Android.

    2. V seznamu vyberte aplikaci pro Android (Xamarin ).

    3. Zadejte název projektu.

    4. Vyberte umístění projektu.

    5. Vyberte OK.

      New Project dialog

  2. V dialogovém okně Nová aplikace pro Android vyberte Prázdnou aplikaci a vyberte OK.

    Screenshot that highlights the Blank App template.

  3. V okně Průzkumník řešení rozbalte Vlastnosti a klikněte na AndroidManifest.xml. Aktualizujte název balíčku, aby odpovídal názvu balíčku, který jste v konzole Google Firebase Console zadali, když jste do projektu přidávali službu Firebase Cloud Messaging.

    Package name in GCM

  4. Pomocí následujícího postupu nastavte cílovou verzi Androidu pro projekt na Android 10.0 :

    1. Klikněte pravým tlačítkem na projekt a vyberte Vlastnosti.
    2. V poli Zkompilovat pomocí verze Androidu: (Cílová architektura) vyberte Android 10.0.
    3. Chcete-li pokračovat ve změně cílové architektury, vyberte v poli zprávy možnost Ano .
  5. Do projektu přidejte požadované balíčky NuGet pomocí následujícího postupu:

    1. Klikněte pravým tlačítkem na projekt a vyberte Spravovat balíčky NuGet.

    2. Přepněte na kartu Nainstalováno , vyberte Xamarin.Android.Support.Design a v pravém podokně vyberte Aktualizovat a aktualizujte balíček na nejnovější verzi.

    3. Přepněte na kartu Procházet . Vyhledejte Xamarin.GooglePlayServices.Base. V seznamu výsledků vyberte Xamarin.GooglePlayServices.Base. Pak vyberte Nainstalovat.

      Google Play Services NuGet

    4. V okně Správce balíčků NuGet najděte Xamarin.Firebase.Messaging. V seznamu výsledků vyberte Xamarin.Firebase.Messaging. Pak vyberte Nainstalovat.

    5. Potom najděte Xamarin.Azure.NotificationHubs.Android. V seznamu výsledků vyberte Xamarin.Azure.NotificationHubs.Android. Pak vyberte Nainstalovat.

Přidání souboru JSON služeb Google

  1. google-services.json Zkopírujte soubor, který jste stáhli z konzoly Google Firebase Console, do složky projektu.

  2. Přidejte google-services.json do projektu.

  3. Vyberte google-services.json v okně Průzkumník řešení.

  4. V podokně Vlastnosti nastavte akci sestavení na GoogleServicesJson. Pokud se GoogleServicesJson nezobrazuje, zavřete Visual Studio a znovu ho spusťte. Pak znovu otevřete projekt a zkuste to znovu.

    GoogleServicesJson build action

Nastavte centra oznámení v projektu

Registrace ve službě Firebase Cloud Messaging

  1. Pokud migrujete z Google Cloud Messaging na Firebase, může soubor vašeho projektu AndroidManifest.xml obsahovat zastaralou konfiguraci GCM, což může způsobit duplikaci oznámení. Upravte soubor a odeberte následující řádky uvnitř oddílu <application> , pokud jsou k dispozici:

    <receiver
        android:name="com.google.firebase.iid.FirebaseInstanceIdInternalReceiver"
        android:exported="false" />
    <receiver
        android:name="com.google.firebase.iid.FirebaseInstanceIdReceiver"
        android:exported="true"
        android:permission="com.google.android.c2dm.permission.SEND">
        <intent-filter>
            <action android:name="com.google.android.c2dm.intent.RECEIVE" />
            <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
            <category android:name="${applicationId}" />
        </intent-filter>
    </receiver>
    
  2. Před element aplikace přidejte následující příkazy.

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.GET_ACCOUNTS"/>
    
  3. Shromážděte následující informace pro aplikaci Android a centrum oznámení:

    • Připojovací řetězec naslouchání: Na řídicím panelu na webu Azure Portal zvolte Zobrazit připojovací řetězce. DefaultListenSharedAccessSignature Zkopírujte připojovací řetězec pro tuto hodnotu.
    • Název centra: Pojmenujte centrum na webu Azure Portal. Například mynotificationhub2.
  4. V okně Průzkumník řešení klikněte pravým tlačítkem na projekt, vyberte Přidat a pak vyberte Třídu.

  5. Vytvořte Constants.cs třídu pro projekt Xamarin a definujte následující konstantní hodnoty ve třídě. Nahraďte zástupné symboly vašimi hodnotami.

    public static class Constants
    {
        public const string ListenConnectionString = "<Listen connection string>";
        public const string NotificationHubName = "<hub name>";
    }
    
  6. Přidejte následující příkazy using do MainActivity.cs:

    using WindowsAzure.Messaging.NotificationHubs;
    
  7. Do třídy MainActivity přidejte následující vlastnosti:

    internal static readonly string CHANNEL_ID = "my_notification_channel";
    
    
  8. Do MainActivity.cspole přidejte následující kód:OnCreatebase.OnCreate(savedInstanceState)

    // Listen for push notifications
    NotificationHub.SetListener(new AzureListener());
    
    // Start the SDK
    NotificationHub.Start(this.Application, HubName, ConnectionString);
    
  9. Přidejte do projektu třídu s názvem AzureListener .

  10. Do příkazu using přidejte následující AzureListener.cspříkazy using .

    using Android.Content;
    using WindowsAzure.Messaging.NotificationHubs;
    
  11. Nad deklaraci třídy přidejte následující kód a zděděte Java.Lang.Object třídu a implementujte:INotificationListener

    public class AzureListener : Java.Lang.Object, INotificationListener
    
  12. Přidejte do třídy následující kód AzureListener pro zpracování přijatých zpráv.

        public void OnPushNotificationReceived(Context context, INotificationMessage message)
        {
            var intent = new Intent(this, typeof(MainActivity));
            intent.AddFlags(ActivityFlags.ClearTop);
            var pendingIntent = PendingIntent.GetActivity(this, 0, intent, PendingIntentFlags.OneShot);
    
            var notificationBuilder = new NotificationCompat.Builder(this, MainActivity.CHANNEL_ID);
    
            notificationBuilder.SetContentTitle(message.Title)
                        .SetSmallIcon(Resource.Drawable.ic_launcher)
                        .SetContentText(message.Body)
                        .SetAutoCancel(true)
                        .SetShowWhen(false)
                        .SetContentIntent(pendingIntent);
    
            var notificationManager = NotificationManager.FromContext(this);
    
            notificationManager.Notify(0, notificationBuilder.Build());
        }
    
  13. Sestavte projekt.

  14. Spusťte aplikaci na zařízení nebo na nahraném emulátoru.

Odeslání zkušebního oznámení z webu Azure Portal

Příjem oznámení ve vaší aplikaci můžete otestovat pomocí možnosti Testovací odeslání na webu Azure Portal. Do zařízení se odešle testovací nabízené oznámení.

Azure portal - Test Send

Nabízená oznámení se většinou posílají ve službě back-end, jako je služba Mobile Services, nebo v technologii ASP.NET pomocí kompatibilní knihovny. Pokud není pro váš back-end k dispozici knihovna, můžete k odesílání zpráv s oznámeními použít také rozhraní REST API.

Další kroky

V tomto kurzu jste poslali oznámení všem zařízením s Androidem registrovaným back-endem. Pokud se chcete naučit zasílat nabízená oznámení určitým zařízením s Androidem, pokračujte následujícím kurzem: