Öğretici: Notification Hubs kullanarak Xamarin.Android uygulamalarına anında iletme bildirimleri gönderme
Genel bakış
Not
Firebase Cloud Messaging'in kullanımdan kaldırılması ve geçiş adımları hakkında bilgi için bkz . Google Firebase Cloud Messaging geçişi.
Bu öğretici, bir Xamarin.Android uygulamasına anında iletme bildirimleri göndermek için Azure Notification Hubs'ın nasıl kullanılacağını size gösterir. Firebase Cloud Messaging (FCM) kullanarak anında iletme bildirimleri alan boş bir Xamarin.Android uygulaması oluşturursunuz. Uygulamanızı çalıştıran tüm cihazlara anında iletme bildirimleri yayımlamak için bildirim hub’ınızı kullanırsınız. Tamamlanan kodu NotificationHubs uygulaması örneğinde bulabilirsiniz.
Bu öğreticide, aşağıdaki adımları gerçekleştireceksiniz:
- Firebase projesi oluşturma ve Firebase Cloud Messaging’i etkinleştirme
- Bildirim hub’ı oluşturma
- Xamarin.Android uygulaması oluşturma ve bildirim hub'ına bağlama
- Azure portalından test bildirimleri gönderme
Önkoşullar
- Azure aboneliği. Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir Azure hesabı oluşturun.
- Windows'da Xamarin ile Visual Studio veya OS X'te Mac için Visual Studio.
- Etkin Google hesabı
Firebase projesi oluşturma ve Firebase Cloud Messaging’i etkinleştirme
Firebase konsolunda oturum açın. Henüz bir tane yoksa yeni bir Firebase projesi oluşturun.
Projenizi oluşturduktan sonra Firebase’i Android uygulamanıza ekleyin’i seçin.
Android uygulamanıza Firebase ekleme sayfasında aşağıdaki adımları izleyin:
Android paketi adı için paketiniz için bir ad girin. Örneğin:
tutorials.tutoria1.xamarinfcmapp
.Uygulamayı kaydet'i seçin.
google-services.json İndir'i seçin. Ardından dosyayı projenizin klasörüne kaydedin ve İleri'yi seçin. Visual Studio projesini henüz oluşturmadıysanız, projeyi oluşturduktan sonra bu adımı gerçekleştirebilirsiniz.
İleri'yi seçin.
Bu adımı atla'yı seçin.
Firebase konsolunda projenizin dişli simgesini seçin. Sonra, Proje Ayarları’nı seçin.
google-services.json dosyasını indirmediyseniz bu sayfadan indirebilirsiniz.
Üst kısımdaki Cloud Messaging sekmesine geçin. Sunucu anahtarını kopyalayıp daha sonra kullanmak üzere kaydedin. Bildirim hub'ınızı yapılandırmak için bu değeri kullanırsınız.
Bildirim hub’ı oluşturma
Azure Portal’ında oturum açın.
Soldaki menüden Tüm hizmetler'i seçin.
Hizmetleri filtrele metin kutusuna Notification Hubs yazın. Hizmeti soldaki menüden SıK KULLANıLANLAR bölümüne eklemek için hizmet adının yanındaki yıldız simgesini seçin. Notification Hubs'ı seçin.
Notification Hubs sayfasında araç çubuğunda Oluştur'u seçin.
Bildirim Hub'ı sayfasındaki Temel Bilgiler sekmesinde aşağıdaki adımları uygulayın:
Abonelik'te, kullanmak istediğiniz Azure aboneliğinin adını seçin ve ardından mevcut bir kaynak grubunu seçin veya yeni bir kaynak grubu oluşturun.
Ad Alanı Ayrıntıları'nda yeni ad alanı için benzersiz bir ad girin.
Ad alanı bir veya daha fazla bildirim hub'ı içerdiğinden, Bildirim Hub'ı Ayrıntıları'na hub için bir ad yazın.
Konum açılan liste kutusundan bir değer seçin. Bu değer, hub'ı oluşturmak istediğiniz konumu belirtir.
Kullanılabilirlik Alanları seçeneğini gözden geçirin. Kullanılabilirlik alanları olan bir bölge seçtiyseniz, onay kutusu varsayılan olarak seçilidir. Kullanılabilirlik Alanları ücretli bir özellik olduğundan katmanınıza ek ücret eklenir.
Olağanüstü durum kurtarma seçeneğini belirleyin: Yok, Eşleştirilmiş kurtarma bölgesi veya Esnek kurtarma bölgesi. Eşleştirilmiş kurtarma bölgesi'ni seçerseniz yük devretme bölgesi görüntülenir. Esnek kurtarma bölgesi'ni seçerseniz, kurtarma bölgeleri listesinden seçim yapmak için açılan listeyi kullanın.
Oluştur'u belirleyin.
Dağıtım tamamlandığında Kaynağa git'i seçin.
Bildirim hub'ı için GCM/FCM ayarlarını yapılandırma
Soldaki menünün Ayarlar bölümünde Google (GCM/FCM)/ öğesini seçin.
Google Firebase Konsolu'ndan not ettiğiniz sunucu anahtarını girin.
Araç çubuğunda Kaydet’i seçin.
Bildirim hub'ınız FCM ile birlikte çalışmak üzere yapılandırıldı. Ayrıca, uygulamanızı anında iletme bildirimleri alması ve anında iletme bildirimlerini göndermesi amacıyla kaydetmenizi sağlayan bağlantı dizelerine sahipsiniz.
Xamarin.Android uygulaması oluşturma ve bunu bildirim hub'ına bağlama
Visual Studio projesi oluşturma ve NuGet paketleri ekleme
Not
Bu öğreticide belgelenen adımlar Visual Studio 2017'ye yöneliktir.
Visual Studio'da Dosya menüsünü açın, Yeni'yi ve ardından Proje'yi seçin. Yeni Proje penceresinde şu adımları uygulayın:
Yüklü, Visual C# seçeneğini genişletin ve Android'e tıklayın.
Listeden Android Uygulaması (Xamarin) öğesini seçin.
Proje için bir ad girin.
Proje için bir konum seçin.
Tamam'ı seçin
Yeni Android Uygulaması iletişim kutusunda Boş Uygulama'yı ve ardından Tamam'ı seçin.
Çözüm Gezgini penceresinde Özellikler’i genişletin ve AndroidManifest.xml dosyasına tıklayın. Paket adını, Google Firebase Console’da projenize Firebase Cloud Messaging eklerken girdiğiniz paket adıyla eşleşecek şekilde güncelleştirin.
Aşağıdaki adımları izleyerek projenin hedef Android sürümünü Android 10.0 olarak ayarlayın:
- Projenize sağ tıklayın ve Özellikler'i seçin.
- Android sürümünü kullanarak derle: (Hedef çerçeve) alanı için Android 10.0'ı seçin.
- Hedef çerçeveyi değiştirmeye devam etmek için ileti kutusunda Evet'i seçin.
Aşağıdaki adımları izleyerek gerekli NuGet paketlerini projeye ekleyin:
Projeye sağ tıklayın ve NuGet Paketlerini Yönet... seçeneğini belirleyin.
Paketi en son sürüme güncelleştirmek için Yüklü sekmesine geçin, Xamarin.Android.Support.Design seçin ve sağ bölmede Güncelleştir'i seçin.
Gözat sekmesine geçin. Xamarin.GooglePlayServices.Base için arama yapın. Sonuç listesinden Xamarin.GooglePlayServices.Base öğesini seçin. Ardından Yükle’yi seçin.
NuGet Package Manager penceresinde Xamarin.Firebase.Messaging öğesini arayın. Sonuç listesinden Xamarin.Firebase.Messaging öğesini seçin. Ardından Yükle’yi seçin.
Şimdi Xamarin.Azure.NotificationHubs.Android araması yapın. Sonuç listesinden Xamarin.Azure.NotificationHubs.Android öğesini seçin. Ardından Yükle’yi seçin.
Google Services JSON Dosyasını ekleme
google-services.json
Google Firebase Konsolu'ndan indirdiğiniz dosyayı proje klasörüne kopyalayın.Projeye ekleyin
google-services.json
.Çözüm Gezgini penceresinde öğesini seçin
google-services.json
.Özellikler bölmesinde, Derleme Eylemini GoogleServicesJson olarak ayarlayın. GoogleServicesJson öğesini görmezseniz, Visual Studio’yu kapatın, yeniden başlatın, projeyi yeniden açın ve yeniden deneyin.
Projenizdeki bildirim hub'larını ayarlama
Firebase Cloud Messaging ile kaydolma
Google Cloud Messaging'ten Firebase'e geçiş gerçekleştiriyorsanız, projenizin
AndroidManifest.xml
dosyası güncel olmayan bir GCM yapılandırması içerebilir ve bu da bildirim yinelemesine neden olabilir. Dosyayı düzenleyin ve varsa bölümün<application>
içinde aşağıdaki satırları kaldırın:<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>
Aşağıdaki deyimleri uygulama öğesinden önce ekleyin.
<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"/>
Android uygulamanız ve bildirim hub'ınız için aşağıdaki bilgileri toplayın:
- Dinleme bağlantı dizesi: Azure portalındaki panoda Bağlantı dizelerini görüntüle'yi seçin. Bu değer için
DefaultListenSharedAccessSignature
bağlantı dizesi kopyalayın. - Hub adı: Azure portalındaki hub’ınızın adı. Örneğin, mynotificationhub2.
- Dinleme bağlantı dizesi: Azure portalındaki panoda Bağlantı dizelerini görüntüle'yi seçin. Bu değer için
Çözüm Gezgini penceresinde projenize sağ tıklayın, Ekle'yi ve ardından Sınıf'ı seçin.
Xamarin projeniz için bir
Constants.cs
sınıf oluşturun ve sınıfında aşağıdaki sabit değerleri tanımlayın. Yer tutucuları değerleriniz ile değiştirin.public static class Constants { public const string ListenConnectionString = "<Listen connection string>"; public const string NotificationHubName = "<hub name>"; }
aşağıdaki using deyimlerini içine
MainActivity.cs
ekleyin:using WindowsAzure.Messaging.NotificationHubs;
MainActivity sınıfına aşağıdaki özellikleri ekleyin:
internal static readonly string CHANNEL_ID = "my_notification_channel";
içinde
MainActivity.cs
aşağıdaki kodu öğesineOnCreate
base.OnCreate(savedInstanceState)
ekleyin:// Listen for push notifications NotificationHub.SetListener(new AzureListener()); // Start the SDK NotificationHub.Start(this.Application, HubName, ConnectionString);
Projenize adlı
AzureListener
bir sınıf ekleyin.aşağıdaki using deyimlerini öğesine
AzureListener.cs
ekleyin.using Android.Content; using WindowsAzure.Messaging.NotificationHubs;
Sınıf bildiriminizin üzerine aşağıdakileri ekleyin ve sınıfınızın öğesinden
Java.Lang.Object
devralmasını ve uygulamasını sağlamasını sağlamaINotificationListener
:public class AzureListener : Java.Lang.Object, INotificationListener
Alınan iletileri işlemek için sınıfına
AzureListener
aşağıdaki kodu ekleyin.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()); }
Projenizi derleyin.
Uygulamayı cihazınızda veya yüklü öykünücüde çalıştırma
Azure portalından test bildirimi gönderme
Azure portalındakiTest Gönderimi seçeneğini kullanarak uygulamanızda bildirim alma testi gerçekleştirebilirsiniz. Bu, cihazınıza test amaçlı anında iletme bildirimi gönderir.
Anında iletme bildirimleri normalde, uyumlu bir kitaplık aracılığıyla Mobile Services veya ASP.NET gibi bir arka uç hizmetinde gönderilir. Arka ucunuz için bir kitaplık kullanılamıyorsa, bildirim iletileri göndermek için doğrudan REST API'yi de kullanabilirsiniz.
Sonraki adımlar
Bu öğreticide, arka uca kayıtlı olan tüm Android cihazlarınıza yayın bildirimleri gönderdiniz. Belirli Android cihazlara nasıl anında iletme bildirimleri gönderileceğini öğrenmek için aşağıdaki öğreticiye ilerleyin: