Öğ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

Firebase projesi oluşturma ve Firebase Cloud Messaging’i etkinleştirme

  1. Firebase konsolunda oturum açın. Henüz bir tane yoksa yeni bir Firebase projesi oluşturun.

  2. Projenizi oluşturduktan sonra Firebase’i Android uygulamanıza ekleyin’i seçin.

    Add Firebase to your Android app

  3. Android uygulamanıza Firebase ekleme sayfasında aşağıdaki adımları izleyin:

    1. Android paketi adı için paketiniz için bir ad girin. Örneğin: tutorials.tutoria1.xamarinfcmapp.

      Specify the package name

    2. Uygulamayı kaydet'i seçin.

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

      Download google-services.json

    4. İleri'yi seçin.

    5. Bu adımı atla'yı seçin.

      Skip the last step

  4. Firebase konsolunda projenizin dişli simgesini seçin. Sonra, Proje Ayarları’nı seçin.

    Select Project Settings

  5. google-services.json dosyasını indirmediyseniz bu sayfadan indirebilirsiniz.

    Download google-services.json from the General tab

  6. Ü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.

    Copy server key

Bildirim hub’ı oluşturma

  1. Azure Portal’ında oturum açın.

  2. Soldaki menüden Tüm hizmetler'i seçin. A screenshot showing select All Services for an existing namespace.

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

    A screenshot showing how to filter for notification hubs.

  4. Notification Hubs sayfasında araç çubuğunda Oluştur'u seçin.

    A screenshot showing how to create a new notification hub.

  5. Bildirim Hub'ı sayfasındaki Temel Bilgiler sekmesinde aşağıdaki adımları uygulayın:

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

    2. Ad Alanı Ayrıntıları'nda yeni ad alanı için benzersiz bir ad girin.

    3. Ad alanı bir veya daha fazla bildirim hub'ı içerdiğinden, Bildirim Hub'ı Ayrıntıları'na hub için bir ad yazın.

    4. Konum açılan liste kutusundan bir değer seçin. Bu değer, hub'ı oluşturmak istediğiniz konumu belirtir.

      Screenshot showing notification hub details.

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

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

      Screenshot showing availability zone details.

    7. Oluştur'u belirleyin.

  6. Dağıtım tamamlandığında Kaynağa git'i seçin.

Bildirim hub'ı için GCM/FCM ayarlarını yapılandırma

  1. Soldaki menünün Ayarlar bölümünde Google (GCM/FCM)/ öğesini seçin.

  2. Google Firebase Konsolu'ndan not ettiğiniz sunucu anahtarını girin.

  3. Araç çubuğunda Kaydet’i seçin.

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

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.

  1. 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:

    1. Yüklü, Visual C# seçeneğini genişletin ve Android'e tıklayın.

    2. Listeden Android Uygulaması (Xamarin) öğesini seçin.

    3. Proje için bir ad girin.

    4. Proje için bir konum seçin.

    5. Tamam'ı seçin

      New Project dialog

  2. Yeni Android Uygulaması iletişim kutusunda Boş Uygulama'yı ve ardından Tamam'ı seçin.

    Screenshot that highlights the Blank App template.

  3. Çö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.

    Package name in GCM

  4. Aşağıdaki adımları izleyerek projenin hedef Android sürümünü Android 10.0 olarak ayarlayın:

    1. Projenize sağ tıklayın ve Özellikler'i seçin.
    2. Android sürümünü kullanarak derle: (Hedef çerçeve) alanı için Android 10.0'ı seçin.
    3. Hedef çerçeveyi değiştirmeye devam etmek için ileti kutusunda Evet'i seçin.
  5. Aşağıdaki adımları izleyerek gerekli NuGet paketlerini projeye ekleyin:

    1. Projeye sağ tıklayın ve NuGet Paketlerini Yönet... seçeneğini belirleyin.

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

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

      Google Play Services NuGet

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

    5. Ş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

  1. google-services.json Google Firebase Konsolu'ndan indirdiğiniz dosyayı proje klasörüne kopyalayın.

  2. Projeye ekleyin google-services.json .

  3. Çözüm Gezgini penceresinde öğesini seçingoogle-services.json.

  4. Ö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.

    GoogleServicesJson build action

Projenizdeki bildirim hub'larını ayarlama

Firebase Cloud Messaging ile kaydolma

  1. 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>
    
  2. 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"/>
    
  3. 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.
  4. Çözüm Gezgini penceresinde projenize sağ tıklayın, Ekle'yi ve ardından Sınıf'ı seçin.

  5. 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>";
    }
    
  6. aşağıdaki using deyimlerini içine MainActivity.csekleyin:

    using WindowsAzure.Messaging.NotificationHubs;
    
  7. MainActivity sınıfına aşağıdaki özellikleri ekleyin:

    internal static readonly string CHANNEL_ID = "my_notification_channel";
    
    
  8. içinde MainActivity.csaşağıdaki kodu öğesine OnCreate base.OnCreate(savedInstanceState)ekleyin:

    // Listen for push notifications
    NotificationHub.SetListener(new AzureListener());
    
    // Start the SDK
    NotificationHub.Start(this.Application, HubName, ConnectionString);
    
  9. Projenize adlı AzureListener bir sınıf ekleyin.

  10. aşağıdaki using deyimlerini öğesine AzureListener.csekleyin.

    using Android.Content;
    using WindowsAzure.Messaging.NotificationHubs;
    
  11. 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ğlama INotificationListener:

    public class AzureListener : Java.Lang.Object, INotificationListener
    
  12. 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());
        }
    
  13. Projenizi derleyin.

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

Azure portal - Test Send

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: