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
- Předplatné Azure. Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet Azure před tím, než začnete.
- Visual Studio s Xamarinem ve Windows nebo Visual Studio pro Mac v systému OS X.
- Aktivní účet Google
Vytvoříte projekt Firebase a povolíte službu Firebase Cloud Messaging
Přihlaste se ke konzole Firebase. Vytvořte nový projekt Firebase, pokud jej ještě nemáte.
Po vytvoření projektu vyberte Add Firebase to your Android app (Přidat Firebase do aplikace pro Android).
Na stránce Přidat Firebase na stránku aplikace pro Android proveďte následující kroky:
Jako název balíčku pro Android zadejte název balíčku. Například:
tutorials.tutorial1.xamarinfcmapp
.Vyberte Zaregistrovat aplikaci.
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.
Vyberte Další.
Vyberte Přeskočit tento krok.
V konzole Firebase vyberte kolečko pro váš projekt. Potom vyberte Project Settings (Nastavení projektu).
Pokud jste si soubor google-services.json nestáhli, můžete si ho stáhnout na této stránce.
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í.
Vytvořit centrum oznámení
Přihlaste se k portálu Azure.
V nabídce vlevo vyberte Všechny služby .
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.
Na stránce Notification Hubs vyberte vytvořit na panelu nástrojů.
Na kartě Základy na stránce Centra oznámení proveďte následující kroky:
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.
Do podrobností oboru názvů zadejte jedinečný název nového oboru názvů.
Obor názvů obsahuje jedno nebo více center oznámení, proto do podrobností centra oznámení zadejte název centra.
V rozevíracím seznamu Umístění vyberte hodnotu. Tato hodnota určuje umístění, ve kterém chcete centrum vytvořit.
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.
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í.
Vyberte Vytvořit.
Po dokončení nasazení vyberte Přejít k prostředku.
Konfigurace nastavení GCM/FCM pro centrum oznámení
V části Nastavení v nabídce vlevo vyberte Google (GCM/FCM)/.
Zadejte klíč serveru, který jste si poznamenali z konzoly Google Firebase Console.
Na panelu nástrojů vyberte Uložit.
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.
V sadě Visual Studio otevřete nabídku Soubor , vyberte Nový a pak vyberte Projekt. V okně Nový projekt proveďte tyto kroky:
Rozbalte položku Nainstalováno, Visual C# a potom klikněte na Android.
V seznamu vyberte aplikaci pro Android (Xamarin ).
Zadejte název projektu.
Vyberte umístění projektu.
Vyberte OK.
V dialogovém okně Nová aplikace pro Android vyberte Prázdnou aplikaci a vyberte OK.
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.
Pomocí následujícího postupu nastavte cílovou verzi Androidu pro projekt na Android 10.0 :
- Klikněte pravým tlačítkem na projekt a vyberte Vlastnosti.
- V poli Zkompilovat pomocí verze Androidu: (Cílová architektura) vyberte Android 10.0.
- Chcete-li pokračovat ve změně cílové architektury, vyberte v poli zprávy možnost Ano .
Do projektu přidejte požadované balíčky NuGet pomocí následujícího postupu:
Klikněte pravým tlačítkem na projekt a vyberte Spravovat balíčky NuGet.
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.
Přepněte na kartu Procházet . Vyhledejte Xamarin.GooglePlayServices.Base. V seznamu výsledků vyberte Xamarin.GooglePlayServices.Base. Pak vyberte Nainstalovat.
V okně Správce balíčků NuGet najděte Xamarin.Firebase.Messaging. V seznamu výsledků vyberte Xamarin.Firebase.Messaging. Pak vyberte Nainstalovat.
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
google-services.json
Zkopírujte soubor, který jste stáhli z konzoly Google Firebase Console, do složky projektu.Přidejte
google-services.json
do projektu.Vyberte
google-services.json
v okně Průzkumník řešení.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.
Nastavte centra oznámení v projektu
Registrace ve službě Firebase Cloud Messaging
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>
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"/>
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.
- Připojovací řetězec naslouchání: Na řídicím panelu na webu Azure Portal zvolte Zobrazit připojovací řetězce.
V okně Průzkumník řešení klikněte pravým tlačítkem na projekt, vyberte Přidat a pak vyberte Třídu.
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>"; }
Přidejte následující příkazy using do
MainActivity.cs
:using WindowsAzure.Messaging.NotificationHubs;
Do třídy MainActivity přidejte následující vlastnosti:
internal static readonly string CHANNEL_ID = "my_notification_channel";
Do
MainActivity.cs
pole 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);
Přidejte do projektu třídu s názvem
AzureListener
.Do příkazu using přidejte následující
AzureListener.cs
příkazy using .using Android.Content; using WindowsAzure.Messaging.NotificationHubs;
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
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()); }
Sestavte projekt.
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í.
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: