Sdílet prostřednictvím


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

    Přidání Firebase do aplikace pro Android

  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.tutorial1.xamarinfcmapp.

      Zadejte název balíčku.

    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.

      Stáhnout google-services.json

    4. Vyberte Další.

    5. Vyberte Přeskočit tento krok.

      Přeskočit poslední krok

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

    Výběr nastavení projektu

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

    Stažení google-services.json z karty Obecné

  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í.

    Kopírování klíče serveru

Vytvořit centrum oznámení

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

  2. V nabídce vlevo vyberte Všechny služby . Snímek obrazovky znázorňující výběr všech služeb pro existující obor názvů

  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.

    Snímek obrazovky znázorňující, jak filtrovat centra oznámení

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

    Snímek obrazovky znázorňující, jak vytvořit nové centrum oznámení

  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.

      Snímek obrazovky s podrobnostmi centra oznámení

    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í.

      Snímek obrazovky zobrazující podrobnosti o zóně dostupnosti

    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.

    Snímek obrazovky centra oznámení na webu Azure Portal se zvýrazněnou možností Google G C C F C M M a zvýrazněnou červenou barvou

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.

      Dialogové okno Nový projekt

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

    Snímek obrazovky se zvýrazněnou šablonou Prázdná aplikace

  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.

    Název balíčku v 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.

      Balíček NuGet služeb Google Play

    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.

    Akce sestavení GoogleServicesJson

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:OnCreate base.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í.

Portál Azure – testovací odeslání

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: