Xamarin.Forms uygulamanıza anında iletme bildirimleri ekleme

Genel Bakış

Bu öğreticide, Xamarin.Forms hızlı başlangıcından kaynaklanan tüm projelere anında iletme bildirimleri eklersiniz. Bu, her kayıt eklendiğinde tüm platformlar arası istemcilere anında iletme bildirimi gönderildiği anlamına gelir.

İndirilen hızlı başlangıç sunucusu projesini kullanmıyorsanız anında iletme bildirimi uzantısı paketine ihtiyacınız olacaktır. Daha fazla bilgi için bkz. Azure Mobile Apps için .NET arka uç sunucusu SDK'sı ile çalışma.

Önkoşullar

iOS için Apple Geliştirici Programı üyeliğine ve fiziksel bir iOS cihazına ihtiyacınız olacaktır. iOS simülatörü anında iletme bildirimlerini desteklemez.

Bildirim hub’ını yapılandırma

Azure App Service Mobile Apps özelliği, gönderim göndermek için Azure Notification Hubs'ı kullandığından, mobil uygulamanız için bir bildirim hub'ı yapılandıracaksınız.

  1. Azure portalApp Services'e gidin ve uygulamanızın arka ucunu seçin. Ayarlar'ın altında Gönder'i seçin.

  2. Uygulamaya bildirim hub'ı kaynağı eklemek için Bağlan'ı seçin. Hub oluşturabilir veya mevcut bir hub'a bağlanabilirsiniz.

    Hub yapılandırma

Artık Mobile Apps arka uç projenize bir bildirim hub'ı bağladınız. Daha sonra bu bildirim hub'sını cihazlara göndermek üzere bir platform bildirim sistemine (PNS) bağlanacak şekilde yapılandıracaksınız.

Sunucu projesini anında iletme bildirimleri gönderecek şekilde güncelleştirme

Bu bölümde, mevcut Mobile Apps arka uç projenizdeki kodu, her yeni öğe eklendiğinde anında iletme bildirimi gönderecek şekilde güncelleştirirsiniz. Bu işlem, platformlar arası gönderime olanak tanıyan Azure Notification Hubs'ın şablon özelliğiyle desteklenir. Çeşitli istemciler şablonlar kullanılarak anında iletme bildirimleri için kaydedilir ve tek bir evrensel gönderim tüm istemci platformlarına ulaşabilir.

Arka uç proje türünüzle eşleşen aşağıdaki yordamlardan birini seçin: .NET arka ucu veya arka ucuNode.js.

.NET arka uç projesi

  1. Visual Studio'da sunucu projesine sağ tıklayın. Ardından NuGet Paketlerini Yönet'i seçin. için Microsoft.Azure.NotificationHubsarama yapın ve yükle'yi seçin. Bu işlem, arka uçtan bildirim göndermek için Notification Hubs kitaplığını yükler.

  2. Sunucu projesinde Controllers>TodoItemController.cs dosyasını açın. Ardından aşağıdaki using deyimlerini ekleyin:

    using System.Collections.Generic;
    using Microsoft.Azure.NotificationHubs;
    using Microsoft.Azure.Mobile.Server.Config;
    
  3. PostTodoItem yönteminde InsertAsync çağrısından sonra aşağıdaki kodu ekleyin:

    // Get the settings for the server project.
    HttpConfiguration config = this.Configuration;
    MobileAppSettingsDictionary settings =
        this.Configuration.GetMobileAppSettingsProvider().GetMobileAppSettings();
    
    // Get the Notification Hubs credentials for the mobile app.
    string notificationHubName = settings.NotificationHubName;
    string notificationHubConnection = settings
        .Connections[MobileAppSettingsKeys.NotificationHubConnectionString].ConnectionString;
    
    // Create a new Notification Hub client.
    NotificationHubClient hub = NotificationHubClient
    .CreateClientFromConnectionString(notificationHubConnection, notificationHubName);
    
    // Send the message so that all template registrations that contain "messageParam"
    // receive the notifications. This includes APNS, GCM, WNS, and MPNS template registrations.
    Dictionary<string,string> templateParams = new Dictionary<string,string>();
    templateParams["messageParam"] = item.Text + " was added to the list.";
    
    try
    {
        // Send the push notification and log the results.
        var result = await hub.SendTemplateNotificationAsync(templateParams);
    
        // Write the success result to the logs.
        config.Services.GetTraceWriter().Info(result.State.ToString());
    }
    catch (System.Exception ex)
    {
        // Write the failure result to the logs.
        config.Services.GetTraceWriter()
            .Error(ex.Message, null, "Push.SendAsync Error");
    }
    

    Bu işlem, öğeyi içeren bir şablon bildirimi gönderir. Yeni öğe eklendiğinde metin.

  4. Sunucu projesini yeniden yayımlayın.

Arka uç proje Node.js

  1. Arka uç projenizi ayarlayın.

  2. todoitem.js'da var olan kodu aşağıdaki kodla değiştirin:

    var azureMobileApps = require('azure-mobile-apps'),
    promises = require('azure-mobile-apps/src/utilities/promises'),
    logger = require('azure-mobile-apps/src/logger');
    
    var table = azureMobileApps.table();
    
    table.insert(function (context) {
    // For more information about the Notification Hubs JavaScript SDK,
    // see https://aka.ms/nodejshubs.
    logger.info('Running TodoItem.insert');
    
    // Define the template payload.
    var payload = '{"messageParam": "' + context.item.text + '" }';  
    
    // Execute the insert. The insert returns the results as a promise.
    // Do the push as a post-execute action within the promise flow.
    return context.execute()
        .then(function (results) {
            // Only do the push if configured.
            if (context.push) {
                // Send a template notification.
                context.push.send(null, payload, function (error) {
                    if (error) {
                        logger.error('Error while sending push notification: ', error);
                    } else {
                        logger.info('Push notification sent successfully!');
                    }
                });
            }
            // Don't forget to return the results from the context.execute().
            return results;
        })
        .catch(function (error) {
            logger.error('Error while running context.execute: ', error);
        });
    });
    
    module.exports = table;  
    

    Bu işlem, yeni bir öğe eklendiğinde item.text dosyasını içeren bir şablon bildirimi gönderir.

  3. Dosyayı yerel bilgisayarınızda düzenlediğinizde, sunucu projesini yeniden yayımlayın.

Android projesini yapılandırma ve çalıştırma (isteğe bağlı)

Android için Xamarin.Forms Droid projesi için anında iletme bildirimlerini etkinleştirmek için bu bölümü tamamlayın.

Firebase Cloud Messaging'i (FCM) 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.

    Firebase’i Android uygulamanıza ekleyin

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

    1. Android paket adı için uygulamanızın build.gradle dosyasındaki applicationId değerini kopyalayın. Bu örnekte, şeklindedir com.fabrikam.fcmtutorial1app.

      Paket adını belirtin

    2. Uygulamayı kaydet'i seçin.

  4. Google-services.json dosyasını indir'i seçin, dosyayı projenizin uygulama klasörüne kaydedin ve ardından İleri'yi seçin.

    google-services.json dosyasını indirin

  5. Android Studio'da projenizde aşağıdaki yapılandırma değişikliklerini yapın.

    1. Proje düzeyi build.gradle dosyanızda (<project>/build.gradle), bağımlılıklar bölümüne aşağıdaki deyimi ekleyin.

      classpath 'com.google.gms:google-services:4.0.1'
      
    2. Uygulama düzeyi build.gradle dosyanızda (<project>/<app-module>/build.gradle), bağımlılıklar bölümüne aşağıdaki deyimleri ekleyin.

      implementation 'com.google.firebase:firebase-core:16.0.8'
      implementation 'com.google.firebase:firebase-messaging:17.3.4'
      
    3. Bağımlılıklar bölümünden sonra uygulama düzeyi build.gradle dosyasının sonuna aşağıdaki satırı ekleyin.

      apply plugin: 'com.google.gms.google-services'
      
    4. Araç çubuğunda Şimdi eşitle'yi seçin.

      build.gradle yapılandırma değişiklikleri

  6. İleri’yi seçin.

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

    Son adımı atla

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

    Proje Ayarları’nı seçin

  9. Google-services.json dosyasını Android Studio projenizin uygulama klasörüne indirmediyseniz bu sayfadan yapabilirsiniz.

  10. Üst kısımdaki Cloud Messaging sekmesine geçin.

  11. Sunucu anahtarını kopyalayıp daha sonra kullanmak üzere kaydedin. Hub'ınızı yapılandırmak için bu değeri kullanırsınız.

FCM kullanarak anında iletme istekleri göndermek için Mobile Apps arka ucunu yapılandırma

  1. Azure portal Tüm >Uygulama HizmetlerineGözat'ıseçin. Ardından Mobile Apps arka ucunuzu seçin.
  2. Ayarlar'ın altında Gönder'i seçin. Ardından Anında iletme bildirimi hizmetlerini yapılandır'ı seçin.
  3. Google'a (GCM) gidin. Firebase konsolundan aldığınız FCM eski sunucu anahtarını girin ve Kaydet'i seçin.

Hizmetiniz artık Firebase Cloud Messaging ile çalışacak şekilde yapılandırılmıştır.

Android projesine anında iletme bildirimleri ekleme

Arka uç FCM ile yapılandırıldığında, FCM'ye kaydolmak için istemciye bileşen ve kod ekleyebilirsiniz. Ayrıca, Mobile Apps arka ucu aracılığıyla Azure Notification Hubs ile anında iletme bildirimlerine kaydolabilir ve bildirimler alabilirsiniz.

  1. Droid projesinde Referanslar > NuGet Paketlerini Yönet ...'e sağ tıklayın.
  2. NuGet Paket Yöneticisi penceresinde Xamarin.Firebase.Messaging paketini arayın ve projeye ekleyin.
  3. Droid projesinin proje özelliklerinde uygulamayı Android sürüm 7.0 veya üzerini kullanarak derlenecek şekilde ayarlayın.
  4. Firebase konsolundan indirilen google-services.json dosyasını Droid projesinin köküne ekleyin ve derleme eylemini GoogleServicesJson olarak ayarlayın. Daha fazla bilgi için bkz. Google Services JSON Dosyası Ekleme.

Firebase Cloud Messaging ile kaydolma

  1. AndroidManifest.xml dosyasını açın ve aşağıdaki <receiver> öğelerini <application> öğesine ekleyin:

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

Firebase Örnek Kimliği Hizmetini Uygulama

  1. AdlıFirebaseRegistrationServiceDroid projesine yeni bir sınıf ekleyin ve dosyanın en üstünde aşağıdaki using deyimlerin bulunduğundan emin olun:

    using System.Threading.Tasks;
    using Android.App;
    using Android.Util;
    using Firebase.Iid;
    using Microsoft.WindowsAzure.MobileServices;
    
  2. Boş FirebaseRegistrationService sınıfı aşağıdaki kodla değiştirin:

    [Service]
    [IntentFilter(new[] { "com.google.firebase.INSTANCE_ID_EVENT" })]
    public class FirebaseRegistrationService : FirebaseInstanceIdService
    {
        const string TAG = "FirebaseRegistrationService";
    
        public override void OnTokenRefresh()
        {
            var refreshedToken = FirebaseInstanceId.Instance.Token;
            Log.Debug(TAG, "Refreshed token: " + refreshedToken);
            SendRegistrationTokenToAzureNotificationHub(refreshedToken);
        }
    
        void SendRegistrationTokenToAzureNotificationHub(string token)
        {
            // Update notification hub registration
            Task.Run(async () =>
            {
                await AzureNotificationHubService.RegisterAsync(TodoItemManager.DefaultManager.CurrentClient.GetPush(), token);
            });
        }
    }
    

    FirebaseRegistrationService sınıfı, uygulamayı FCM'ye erişme yetkisi veren güvenlik belirteçleri oluşturmakla sorumludur. OnTokenRefresh Uygulama FCM'den bir kayıt belirteci aldığında yöntemi çağrılır. yöntemi, fcm tarafından zaman uyumsuz olarak güncelleştirilen özelliğinden FirebaseInstanceId.Instance.Token belirteci alır. OnTokenRefresh Yöntem seyrek çağrılır çünkü belirteç yalnızca uygulama yüklendiğinde veya kaldırıldığında, kullanıcı uygulama verilerini sildiğinde, uygulama Örnek Kimliğini sildiğinde veya belirtecin güvenliği tehlikeye atıldığında güncelleştirilir. Ayrıca FCM Örnek Kimliği hizmeti, uygulamanın belirtecini düzenli aralıklarla (genellikle 6 ayda bir) yenilemesini talep eder.

    OnTokenRefresh yöntemi, kullanıcının kayıt belirtecini SendRegistrationTokenToAzureNotificationHub Azure Notification Hub ile ilişkilendirmek için kullanılan yöntemini de çağırır.

Azure Notification Hub'a kaydolma

  1. AdlıAzureNotificationHubServiceDroid projesine yeni bir sınıf ekleyin ve dosyanın en üstünde aşağıdaki using deyimlerin bulunduğundan emin olun:

    using System;
    using System.Threading.Tasks;
    using Android.Util;
    using Microsoft.WindowsAzure.MobileServices;
    using Newtonsoft.Json.Linq;
    
  2. Boş AzureNotificationHubService sınıfı aşağıdaki kodla değiştirin:

    public class AzureNotificationHubService
    {
        const string TAG = "AzureNotificationHubService";
    
        public static async Task RegisterAsync(Push push, string token)
        {
            try
            {
                const string templateBody = "{\"data\":{\"message\":\"$(messageParam)\"}}";
                JObject templates = new JObject();
                templates["genericMessage"] = new JObject
                {
                    {"body", templateBody}
                };
    
                await push.RegisterAsync(token, templates);
                Log.Info("Push Installation Id: ", push.InstallationId.ToString());
            }
            catch (Exception ex)
            {
                Log.Error(TAG, "Could not register with Notification Hub: " + ex.Message);
            }
        }
    }
    

    RegisterAsync yöntemi JSON olarak basit bir bildirim iletisi şablonu oluşturur ve Firebase kayıt belirtecini kullanarak bildirim hub'ından şablon bildirimleri almak için kaydeder. Bu, Azure Notification Hub'dan gönderilen tüm bildirimlerin kayıt belirteciyle temsil edilen cihazı hedeflemesini sağlar.

Anında İletme Bildiriminin İçeriğini Görüntüleme

  1. AdlıFirebaseNotificationServiceDroid projesine yeni bir sınıf ekleyin ve dosyanın en üstünde aşağıdaki using deyimlerin bulunduğundan emin olun:

    using Android.App;
    using Android.Content;
    using Android.Media;
    using Android.Support.V7.App;
    using Android.Util;
    using Firebase.Messaging;
    
  2. Boş FirebaseNotificationService sınıfı aşağıdaki kodla değiştirin:

    [Service]
    [IntentFilter(new[] { "com.google.firebase.MESSAGING_EVENT" })]
    public class FirebaseNotificationService : FirebaseMessagingService
    {
        const string TAG = "FirebaseNotificationService";
    
        public override void OnMessageReceived(RemoteMessage message)
        {
            Log.Debug(TAG, "From: " + message.From);
    
            // Pull message body out of the template
            var messageBody = message.Data["message"];
            if (string.IsNullOrWhiteSpace(messageBody))
                return;
    
            Log.Debug(TAG, "Notification message body: " + messageBody);
            SendNotification(messageBody);
        }
    
        void SendNotification(string messageBody)
        {
            var intent = new Intent(this, typeof(MainActivity));
            intent.AddFlags(ActivityFlags.ClearTop);
            //Unique request code to avoid PendingIntent collision.
            var requestCode = new Random().Next();
            var pendingIntent = PendingIntent.GetActivity(this, requestCode, intent, PendingIntentFlags.OneShot);
            var notificationBuilder = new NotificationCompat.Builder(this)
                .SetSmallIcon(Resource.Drawable.ic_stat_ic_notification)
                .SetContentTitle("New Todo Item")
                .SetContentText(messageBody)
                .SetContentIntent(pendingIntent)
                .SetSound(RingtoneManager.GetDefaultUri(RingtoneType.Notification))
                .SetAutoCancel(true);
    
            var notificationManager = NotificationManager.FromContext(this);
            notificationManager.Notify(0, notificationBuilder.Build());
        }
    }
    

    Bir uygulama FCM'den OnMessageReceived bildirim aldığında çağrılan yöntemi, ileti içeriğini ayıklar ve yöntemini çağırır SendNotification . Bu yöntem, ileti içeriğini uygulama çalışırken başlatılan ve bildirim alanında görünen yerel bir bildirime dönüştürür.

Artık android cihazda veya öykünücüde çalışan uygulamada anında iletme bildirimlerini test edebilirsiniz.

Android uygulamanızda anında iletme bildirimlerini test etme

İlk iki adım yalnızca öykünücü üzerinde test yaparken gereklidir.

  1. Google Play Hizmetleri ile yapılandırılmış bir cihaz veya öykünücüye dağıtım yaptığınızdan veya bu cihazda hata ayıkladığınızdan emin olun. Bu, Play uygulamalarının cihazda veya öykünücüde yüklü olup olmadığını denetleyerek doğrulanabilir.
  2. Uygulama>Ayarları> Hesap ekle'ye tıklayarak Android cihazına bir Googlehesabı ekleyin. Ardından, mevcut bir Google hesabını cihaza eklemek veya yeni bir hesap oluşturmak için istemleri izleyin.
  3. Visual Studio veya Xamarin Studio'da Droid projesine sağ tıklayın ve Başlangıç projesi olarak ayarla'ya tıklayın.
  4. Projeyi oluşturmak ve uygulamayı Android cihazınızda veya öykünücünüzde başlatmak için Çalıştır'a tıklayın.
  5. Uygulamada bir görev yazın ve artı (+) simgesine tıklayın.
  6. Bir öğe eklendiğinde bildirim alındığını doğrulayın.

iOS projesini yapılandırma ve çalıştırma (isteğe bağlı)

Bu bölüm iOS cihazları için Xamarin iOS projesi çalıştırmaya yöneliktir. iOS cihazlarıyla çalışmıyorsanız, bu bölümü atlayabilirsiniz.

Sertifika imzalama isteği dosyasını oluşturma

Apple Anında İletme Bildirimi Hizmeti (APN' ler), anında iletme bildirimlerinizin kimliğini doğrulamak için sertifikalar kullanır. Bildirim gönderip almak için gereken bildirim sertifikasını oluşturacak bu talimatları uygulayın. Bu kavramlar hakkında daha fazla bilgi için resmi Apple Anında İletme Bildirimi Hizmeti belgelerine bakın.

Apple'ın imzalı anında iletme sertifikası oluşturmak için kullandığı Sertifika İmzalama İsteği (CSR) dosyasını oluşturun.

  1. Mac’inizde Anahtar Zinciri Erişimi aracını çalıştırın. Yardımcı Programlar klasöründen veya Başlatma Çubuğundaki Diğer klasöründen açılabilir.

  2. Anahtarlık Erişimi'ni seçin, Sertifika Yardımcısı'nı genişletin ve ardından Sertifika Yetkilisinden Sertifika İste'yi seçin.

    Anahtarlık Erişimi kullanarak yeni sertifika isteğinde bulunma

    Not

    Varsayılan olarak, AnahtarLık Erişimi listedeki ilk öğeyi seçer. Sertifikalar kategorisindeyseniz ve Apple Dünya Çapında Geliştirici İlişkileri Sertifika Yetkilisi listedeki ilk öğe değilse bu sorun olabilir. CSR'yi (Sertifika İmzalama İsteği) oluşturmadan önce anahtar olmayan bir öğeye sahip olduğunuzdan veya Apple Worldwide Developer Relations Certification Authority anahtarının seçili olduğundan emin olun.

  3. Kullanıcı Email Adresinizi seçin, Ortak Ad değerinizi girin, Diske kaydedildi'yi belirttiğinizden emin olun ve ardından Devam'ı seçin. Ca Email Adresini boş bırakın çünkü gerekli değildir.

    Gerekli sertifika bilgileri

  4. Farklı Kaydet'e CSR dosyası için bir ad girin, Konum'da konumu seçin ve ardından Kaydet'i seçin.

    Sertifika için bir dosya adı seçin

    Bu eylem CSR dosyasını seçili konuma kaydeder. Varsayılan konum Masaüstü'dür. Bu dosya için seçilen konumu unutmayın.

Ardından, uygulamanızı Apple'a kaydedin, anında iletme bildirimlerini etkinleştirin ve anında iletme sertifikası oluşturmak için dışarı aktarılan CSR'yi karşıya yükleyin.

Anında iletme bildirimleri için uygulamanızı kaydetme

Bir iOS uygulamasına anında iletme bildirimleri göndermek için uygulamanızı Apple'a kaydedin ve anında iletme bildirimlerine kaydolun.

  1. Uygulamanızı henüz kaydettiyseniz Apple Geliştirici Merkezi'ndeki iOS Sağlama Portalı'na göz atın. Portalda Apple kimliğiniz ile oturum açın ve Tanımlayıcılar'ı seçin. Ardından yeni bir uygulama kaydetmek için öğesini seçin + .

    iOS Hazırlama Portalı Uygulama Kimlikleri sayfası

  2. Yeni Tanımlayıcı Kaydet ekranında Uygulama Kimlikleri radyo düğmesini seçin. Daha sonra Devam seçeneğini belirleyin.

    iOS Sağlama Portalı yeni kimlik kaydetme sayfası

  3. Yeni uygulamanız için aşağıdaki üç değeri güncelleştirin ve Devam'ı seçin:

    • Açıklama: Uygulamanız için açıklayıcı bir ad yazın.

    • Paket Kimliği: Uygulama Dağıtım Kılavuzu'nda belirtildiği gibi Kuruluş Tanımlayıcısı.Ürün Adı biçiminde bir Paket Kimliği girin. Kuruluş Tanımlayıcısı ve Ürün Adı değerleri, Xcode projenizi oluştururken kullandığınız kuruluş tanımlayıcısı ve ürün adıyla eşleşmelidir. Aşağıdaki ekran görüntüsünde NotificationHubs değeri kuruluş tanımlayıcısı olarak, GetStarted değeri ise ürün adı olarak kullanılır. Xcode'un doğru yayımlama profilini kullanması için Paket Tanımlayıcısı değerinin Xcode projenizdeki değerle eşleştiğinden emin olun.

      iOS Sağlama Portalı kayıt uygulaması kimliği sayfası

    • Anında İletme Bildirimleri: Özellikler bölümündeki Anında İletme Bildirimleri seçeneğini işaretleyin.

      Yeni Uygulama Kimliği kaydetme formu

      Bu eylem, Uygulama Kimliğinizi oluşturur ve bilgileri onaylamanızı talep eder. Yeni Uygulama Kimliğini onaylamak için Devam'ı ve ardından Kaydet'i seçin.

      Yeni Uygulama Kimliğini Onayla

      Kaydet'i seçtikten sonra Yeni Uygulama Kimliği'ni Sertifikalar, Tanımlayıcılar & Profiller sayfasında satır öğesi olarak görürsünüz.

  4. Sertifikalar, Tanımlayıcılar & Profilleri sayfasında, Tanımlayıcılar'ın altında, yeni oluşturduğunuz Uygulama Kimliği satırı öğesini bulun ve satırını seçerek Uygulama Kimliği Yapılandırmanızı Düzenleyin ekranını görüntüleyin.

Notification Hubs için Sertifika Oluşturma

Bildirim hub'ını APNS ile çalışacak şekilde etkinleştirmek için bir sertifika gereklidir. Bu iki yoldan biriyle yapılabilir:

  1. Doğrudan Notification Hub'a yüklenebilecek bir .p12 oluşturun.
  2. Belirteç tabanlı kimlik doğrulaması için kullanılabilecek bir .p8 oluşturun (daha yeni bir yaklaşım).

Daha yeni yaklaşım, APNS için Belirteç tabanlı (HTTP/2) kimlik doğrulamasında belgelendiği gibi bir dizi avantaja (sertifikaları kullanmaya kıyasla) sahiptir. Ancak her iki yaklaşım için de adımlar sağlanmıştır.

SEÇENEK 1: Doğrudan Notification Hub'a yüklenebilecek bir .p12 anında iletme sertifikası oluşturma

  1. Ekranı aşağı kaydırarak işaretli Anında İletme Bildirimleri seçeneğine gelin ve sertifikayı oluşturmak için Yapılandır'ı seçin.

    Uygulama Kimliğini Düzenle sayfası

  2. Apple Anında İletme Bildirimi hizmeti SSL Sertifikaları penceresi görüntülenir. Geliştirme SSL Sertifikası bölümünün altındaki Sertifika Oluştur düğmesini seçin.

    Uygulama Kimliği için sertifika oluştur düğmesi

    Yeni Sertifika Oluştur ekranı görüntülenir.

    Not

    Bu öğretici geliştirme sertifikası kullanır. Aynı işlem üretim sertifika kaydedildiğinde de kullanılır. Bildirimleri gönderirken aynı sertifika türünü kullandığınızdan kesinlikle emin olun.

  3. Dosya Seç'i seçin, CSR dosyasını ilk görevden kaydettiğiniz konuma gidin ve ardından sertifika adına çift tıklayarak dosyayı yükleyin. Daha sonra Devam seçeneğini belirleyin.

  4. Portal sertifikayı oluşturdıktan sonra İndir düğmesini seçin. Sertifikayı kaydedin ve kaydedildiği konumu unutmayın.

    Oluşturulan sertifika indirme sayfası

    Sertifika indirilir ve bilgisayarınıza İndirilenler klasörünüze kaydedilir.

    İndirilenler klasöründe sertifika dosyasını bulma

    Not

    Varsayılan olarak, indirilen geliştirme sertifikası aps_development.cer olarak adlandırılır.

  5. İndirilen aps_development.cer bildirim sertifikasına çift tıklayın. Bu eylem yeni sertifikayı Anahtar Zinciri’ne aşağıdaki resimde gösterildiği gibi yüklenir:

    Yeni sertifikanın gösterildiği anahtarlık erişim sertifikaları listesi

    Not

    Sertifikanızdaki ad farklı olsa da, adın önüne Apple Development iOS Anında İletme Hizmetleri eklenir.

  6. Anahtar Zinciri Erişimi’nde Sertifikalar kategorisinde oluşturduğunuz yeni bildirim sertifikasına sağ tıklayın. Dışarı Aktar'ı seçin, dosyayı adlandırın, .p12 biçimini seçin ve ardından Kaydet'i seçin.

    Sertifikayı p12 biçiminde dışarı aktarma

    Sertifikayı parolayla korumayı seçebilirsiniz, ancak bu isteğe bağlıdır. Parola oluşturmayı atlamak istiyorsanız Tamam'a tıklayın. Dışarı aktarılan .p12 sertifikanın dosya adını ve konumunu not edin. APN'lerle kimlik doğrulamasını etkinleştirmek için kullanılırlar.

    Not

    .p12 dosya adınız ve konumunuz bu öğreticide görünenden farklı olabilir.

SEÇENEK 2: Belirteç tabanlı kimlik doğrulaması için kullanılabilecek bir .p8 sertifikası oluşturma

  1. Aşağıdaki ayrıntıları not edin:

    • Uygulama Kimliği Ön Eki (bu bir Ekip Kimliğidir)
    • Paket Kimliği
  2. Sertifikalar, Tanımlayıcılar & Profiller'e dönün ve Anahtarlar'a tıklayın.

    Not

    APNS için yapılandırılmış bir anahtarınız varsa, indirdiğiniz .p8 sertifikasını oluşturulduktan hemen sonra yeniden kullanabilirsiniz. Bu durumda , 3 ile 5 arasında adımları yoksayabilirsiniz.

  3. + Yeni bir anahtar oluşturmak için düğmeye (veya Anahtar oluştur düğmesine) tıklayın.

  4. Uygun bir Anahtar Adı değeri sağlayın, ardından Apple Anında İletme Bildirimleri hizmeti (APN' ler) seçeneğini işaretleyin ve ardından Devam'a ve ardından sonraki ekranda Kaydet'e tıklayın.

  5. İndir'e tıklayın ve .p8 dosyasını (AuthKey_ ön ekli) güvenli bir yerel dizine taşıyın ve ardından Bitti'ye tıklayın.

    Not

    .p8 dosyanızı güvenli bir yerde tuttuğunuzdan emin olun (ve yedek kaydedin). Anahtarınızı indirdikten sonra, sunucu kopyası kaldırıldıktan sonra yeniden indirilemez.

  6. Anahtarlar'da, yeni oluşturduğunuz anahtara (veya bunun yerine bunu kullanmayı seçtiyseniz mevcut bir anahtara) tıklayın.

  7. Anahtar Kimliği değerini not edin.

  8. .p8 sertifikanızı Visual Studio Code gibi seçtiğiniz uygun bir uygulamada açın ve anahtar değerini not edin. Bu, -----BEGIN PRIVATE KEY----- ile -----END PRIVATE KEY----- arasındaki değerdir.

    -----BEGIN PRIVATE KEY-----
    <key_value>
    -----END PRIVATE KEY-----
    

    Not

    Bu, daha sonra Notification Hub'ı yapılandırmak için kullanılacak belirteç değeridir.

Bu adımların sonunda, bildirim hub'ınızı APNs bilgileriyle yapılandırma bölümünde kullanmak üzere aşağıdaki bilgilere sahip olmanız gerekir:

  • Ekip Kimliği (bkz. 1. adım)
  • Paket Kimliği (bkz. 1. adım)
  • Anahtar Kimliği (bkz. 7. adım)
  • Belirteç değeri ,p8 anahtar değeri (bkz. 8. adım)

Uygulama için bir sağlama profili oluşturun

  1. iOS Sağlama Portalı'na dönün, Sertifikalar, Tanımlayıcılar & Profiller'i seçin, sol menüden Profiller'i seçin ve ardından yeni bir profil oluşturmak için seçin+. Yeni Sağlama Profili Kaydet ekranı görüntülenir.

  2. Sağlama profili türü olarak Geliştirme'nin altında iOS Uygulama Geliştirme'yi ve ardından Devam'ı seçin.

    Sağlama profili listesi

  3. Ardından, Uygulama Kimliği açılan listesinden oluşturduğunuz uygulama kimliğini seçin ve Devam'ı seçin.

    Uygulama Kimliği'ni seçin

  4. Sertifikaları seçin penceresinde, kod imzalama için kullandığınız geliştirme sertifikasını seçin ve Devam'ı seçin. Bu sertifika, oluşturduğunuz anında iletme sertifikası değil. Yoksa, oluşturmanız gerekir. Bir sertifika varsa sonraki adıma atlayın. Yoksa bir geliştirme sertifikası oluşturmak için:

    1. Kullanılabilir Sertifika Yok seçeneğini görüyorsanız Sertifika Oluştur'u seçin.
    2. Yazılım bölümünde Apple Geliştirme'yi seçin. Daha sonra Devam seçeneğini belirleyin.
    3. Yeni Sertifika Oluştur ekranında Dosya Seç'i seçin.
    4. Daha önce oluşturduğunuz Sertifika İmzalama İsteği sertifikasına göz atın, sertifikayı seçin ve ardından Aç'ı seçin.
    5. Devam’ı seçin.
    6. Geliştirme sertifikasını indirin ve kaydedildiği konumu unutmayın.
  5. Sertifikalar, Tanımlayıcılar & Profiller sayfasına dönün, sol menüden Profiller'i seçin ve ardından yeni bir profil oluşturmak için öğesini seçin+. Yeni Sağlama Profili Kaydet ekranı görüntülenir.

  6. Sertifika seç penceresinde, yeni oluşturduğunuz geliştirme sertifikasını seçin. Daha sonra Devam seçeneğini belirleyin.

  7. Ardından test için kullanılacak cihazları seçin ve Devam'ı seçin.

  8. Son olarak, Sağlama Profili Adı'nda profil için bir ad seçin ve Oluştur'u seçin.

    Sağlama profili adını seçin

  9. Yeni sağlama profili oluşturulduğunda İndir'i seçin. Kaydedildiği konumu unutmayın.

  10. Sağlama profilinin konumuna göz atın ve ardından Xcode geliştirme makinenize yüklemek için çift tıklayın.

Bildirim hub’ı oluşturma

Bu bölümde bir bildirim hub'ı oluşturacak ve .p12 anında iletme sertifikasını veya belirteç tabanlı kimlik doğrulamasını kullanarak APN'lerle kimlik doğrulamasını yapılandıracaksınız. Önceden oluşturduğunuz bir bildirim hub'ını kullanmak istiyorsanız 5. adıma atlayabilirsiniz.

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

  2. Soldaki menüden Tüm hizmetler'i ve ardından Mobil bölümünde Notification Hubs'ı seçin. Hizmeti soldaki menüden SıK KULLANıLANLAR bölümüne eklemek için hizmet adının yanındaki star simgesini seçin. Sık kullanılanlara Notification Hubs'ı ekledikten sonra sol menüden seçin.

    Azure portal - Notification Hubs'ı seçin

  3. Notification Hubs sayfasında araç çubuğunda Ekle'yi seçin.

    Notification Hubs - Araç çubuğu ekle düğmesi

  4. Bildirim Hub'ı sayfasında aşağıdaki adımları uygulayın:

    1. Notification Hub'a bir ad girin.

    2. Yeni ad alanı oluşturma bölümüne bir ad girin. Ad alanı bir veya daha fazla hub içerir.

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

    4. Kaynak Grubu'nda var olan bir kaynak grubunu seçin veya yeni bir kaynak grubu için bir ad oluşturun.

    5. Oluştur’u seçin.

      Azure portal - bildirim hub'ı özelliklerini ayarlama

  5. Bildirimler'i (zil simgesi) ve ardından Kaynağa git'i seçin. Ayrıca Notification Hubs sayfasında listeyi yenileyebilir ve hub'ınızı seçebilirsiniz.

    Azure portal - bildirimler -> Kaynağa git

  6. Listeden Erişim İlkeleri'ni seçin. İki bağlantı dizesinin kullanımınıza sunulduğuna dikkat edin. Anında iletme bildirimlerini işlemek için bunlara daha sonra ihtiyacınız olacak.

    Önemli

    Uygulamanızda DefaultFullSharedAccessSignatureilkesini kullanmayın. Bu, yalnızca arka ucunuz için kullanılır.

    Azure portal - bildirim hub'ı bağlantı dizeleri

ApNs bilgileriyle bildirim hub'ınızı yapılandırma

Bildirim Hizmetleri'nin altında Apple 'ı (APNS) seçin, ardından Notification Hubs için Sertifika Oluşturma bölümünde daha önce seçtiğiniz yaklaşıma göre uygun adımları izleyin.

Not

Uygulama Modu için Üretim'i yalnızca uygulamanızı mağazadan satın alan kullanıcılara anında iletme bildirimleri göndermek istiyorsanız kullanın.

SEÇENEK 1: .p12 anında iletme sertifikası kullanma

  1. Sertifika’yı seçin.

  2. Dosya simgesini seçin.

  3. Daha önce dışarı aktardığınız .p12 dosyasını ve ardından Aç'ı seçin.

  4. Gerekirse doğru parolayı belirtin.

  5. Korumalı alan modunu seçin.

    Azure portal'da APNs sertifikasını yapılandırma

  6. Kaydet’i seçin.

SEÇENEK 2: Belirteç tabanlı kimlik doğrulamayı kullanma

  1. Belirteç'i seçin.

  2. Daha önce edindiğiniz aşağıdaki değerleri girin:

    • Anahtar Kimliği
    • Paket Kimliği
    • Ekip Kimliği
    • Belirteç
  3. Korumalı Alan'ı seçin

  4. Kaydet’i seçin.

Artık bildirim hub'ınızı APN'lerle yapılandırmış oldunuz. Ayrıca uygulamanızı kaydetmek ve anında iletme bildirimleri göndermek için bağlantı dizelerine de sahipsiniz.

APNS için bildirim hub'ını yapılandırma

  1. Mac bilgisayarınızda Anahtarlık Erişimi'ni başlatın. Sol gezinti çubuğundaki Kategori'nin altında Sertifikalarım'ı açın. Önceki bölümde indirdiğiniz SSL sertifikasını bulun ve içeriğini açıklayın. Yalnızca sertifikayı seçin (özel anahtarı seçmeyin). Ardından dışarı aktarın.
  2. Azure portal Tüm >Uygulama HizmetlerineGözat'ıseçin. Ardından Mobile Apps arka ucunuzu seçin.
  3. Ayarlar'ın altında App Service Gönder'i seçin. Ardından bildirim hub'ınızın adını seçin.
  4. Apple Anında İletme Bildirimi Hizmetleri>Sertifikayı Karşıya Yükle'ye gidin. Doğru Modu seçerek .p12 dosyasını karşıya yükleyin (önceki istemci SSL sertifikanızın üretim veya korumalı alan olmasına bağlı olarak). Değişiklikleri kaydedin.

Hizmetiniz artık iOS'ta anında iletme bildirimleriyle çalışacak şekilde yapılandırılmıştır.

Ardından, Xamarin Studio veya Visual Studio'da iOS proje ayarını yapılandıracaksınız.

Xamarin Studio'da iOS projesini yapılandırma

  1. Xamarin.Studio'da Info.plist dosyasını açın ve Paket Tanımlayıcısı'nı daha önce oluşturduğunuz paket kimliğiyle yeni uygulama kimliğinizle güncelleştirin.

  2. Ekranı aşağı kaydırarak Arka Plan Modları'na gelin. Arka Plan Modlarını Etkinleştir kutusunu ve Uzak bildirimler kutusunu seçin.

  3. Proje Seçenekleri'ni açmak için Çözüm Panelinde projenize çift tıklayın.

  4. Derle'nin altında iOS Paket İmzalama'yı seçin ve bu proje için ayarladığınız ilgili kimlik ve sağlama profilini seçin.

    Bu, projenin kod imzalama için yeni profili kullanmasını sağlar. Resmi Xamarin cihaz sağlama belgeleri için bkz. Xamarin Cihaz Sağlama.

Visual Studio'da iOS projesini yapılandırma

  1. Visual Studio'da projeye sağ tıklayın ve ardından Özellikler'e tıklayın.

  2. Özellikler sayfalarında iOS Uygulaması sekmesine tıklayın ve Tanımlayıcıyı daha önce oluşturduğunuz kimlikle güncelleştirin.

  3. iOS Paket İmzalama sekmesinde, bu proje için ayarladığınız ilgili kimlik ve sağlama profilini seçin.

    Bu, projenin kod imzalama için yeni profili kullanmasını sağlar. Resmi Xamarin cihaz sağlama belgeleri için bkz. Xamarin Cihaz Sağlama.

  4. Info.plist'e çift tıklayarak açın ve ardından Arka Plan Modları'nın altında RemoteNotifications'ı etkinleştirin.

iOS uygulamanıza anında iletme bildirimleri ekleme

  1. iOS projesinde AppDelegate.cs dosyasını açın ve kod dosyasının en üstüne aşağıdaki deyimi ekleyin.

    using Newtonsoft.Json.Linq;
    
  2. AppDelegate sınıfında RegisteredForRemoteNotifications olayının bildirimlere kaydolması için bir geçersiz kılma ekleyin:

    public override void RegisteredForRemoteNotifications(UIApplication application,
        NSData deviceToken)
    {
        const string templateBodyAPNS = "{\"aps\":{\"alert\":\"$(messageParam)\"}}";
    
        JObject templates = new JObject();
        templates["genericMessage"] = new JObject
            {
                {"body", templateBodyAPNS}
            };
    
        // Register for push with your mobile app
        Push push = TodoItemManager.DefaultManager.CurrentClient.GetPush();
        push.RegisterAsync(deviceToken, templates);
    }
    
  3. AppDelegate'teDidReceiveRemoteNotification olay işleyicisi için aşağıdaki geçersiz kılmayı da ekleyin:

    public override void DidReceiveRemoteNotification(UIApplication application,
        NSDictionary userInfo, Action<UIBackgroundFetchResult> completionHandler)
    {
        NSDictionary aps = userInfo.ObjectForKey(new NSString("aps")) as NSDictionary;
    
        string alert = string.Empty;
        if (aps.ContainsKey(new NSString("alert")))
            alert = (aps[new NSString("alert")] as NSString).ToString();
    
        //show alert
        if (!string.IsNullOrEmpty(alert))
        {
            UIAlertView avAlert = new UIAlertView("Notification", alert, null, "OK", null);
            avAlert.Show();
        }
    }
    

    Bu yöntem, uygulama çalışırken gelen bildirimleri işler.

  4. AppDelegate sınıfında FinishedLaunching yöntemine aşağıdaki kodu ekleyin:

    // Register for push notifications.
    var settings = UIUserNotificationSettings.GetSettingsForTypes(
        UIUserNotificationType.Alert
        | UIUserNotificationType.Badge
        | UIUserNotificationType.Sound,
        new NSSet());
    
    UIApplication.SharedApplication.RegisterUserNotificationSettings(settings);
    UIApplication.SharedApplication.RegisterForRemoteNotifications();
    

    Bu, uzaktan bildirimler ve istekler anında iletme kaydı desteği sağlar.

Uygulamanız artık anında iletme bildirimlerini destekleyecek şekilde güncelleştirildi.

iOS uygulamanızda anında iletme bildirimlerini test edin

  1. iOS projesine sağ tıklayın ve Başlangıç Projesi Olarak Ayarla'ya tıklayın.

  2. Projeyi oluşturmak ve uygulamayı bir iOS cihazında başlatmak için Visual Studio'da Çalıştır düğmesine veya F5'e basın. Ardından, anında iletme bildirimlerini kabul etmek için Tamam'a tıklayın.

    Not

    Uygulamanızdan gelen anında iletme bildirimlerini açıkça kabul etmelisiniz. Bu istek yalnızca uygulamanın ilk kez çalıştırıldığında gerçekleşir.

  3. Uygulamada bir görev yazın ve artı (+) simgesine tıklayın.

  4. Bir bildirimin alındığını doğrulayın ve ardından bildirimi kapatmak için Tamam'a tıklayın.

Windows projelerini yapılandırma ve çalıştırma (isteğe bağlı)

Bu bölüm, Windows cihazları için Xamarin.Forms WinApp ve WinPhone81 projelerini çalıştırmaya yöneliktir. Bu adımlar Evrensel Windows Platformu (UWP) projelerini de destekler. Windows cihazlarıyla çalışmıyorsanız, bu bölümü atlayabilirsiniz.

Windows Bildirim Hizmeti'ne (WNS) anında iletme bildirimleri için Windows uygulamanızı kaydetme

  1. Visual Studio Çözüm Gezgini'da Windows Mağazası uygulama projesine sağ tıklayın. Ardından MağazaUygulamayı Mağaza >ile İlişkile'yi seçin.

    Uygulamayı Windows Mağazası ile ilişkilendirme

  2. Sihirbazda İleri'yi seçin. Ardından Microsoft hesabınızla oturum açın. Yeni uygulama adı ayır alanına uygulamanız için bir ad yazın ve Ardından Ayır'ı seçin.

  3. Uygulama kaydı başarıyla oluşturulduktan sonra yeni uygulama adını seçin. İleri'yi ve ardından İlişkili'yi seçin. Bu işlem, gerekli Windows Mağazası kayıt bilgilerini uygulama bildirimine ekler.

  4. Windows Mağazası uygulaması için daha önce oluşturduğunuz kaydı kullanarak Windows Phone Store uygulama projesi için 1. ve 3. adımları yineleyin.

  5. Windows Geliştirme Merkezi'ne gidin ve Microsoft hesabınızla oturum açın. Uygulamalarım bölümünde yeni uygulama kaydını seçin. Ardından Hizmetler>Anında İletme bildirimleri'ni genişletin.

  6. Anında iletme bildirimleri sayfasındaki Windows Anında İletme Bildirimi Hizmetleri (WNS) ve Microsoft Azure Mobile Apps altında Live Services siteyi seçin. Paket SID'sinin değerlerini ve Uygulama Gizli Anahtarı'ndakigeçerli değeri not edin.

    Geliştirici merkezinde uygulama ayarı

    Önemli

    Uygulama gizli anahtarı ve paket SID'si önemli güvenlik kimlik bilgileridir. Bu değerleri kimseyle paylaşmayın veya uygulamanızla dağıtmayın.

WNS için bildirim hub'ını yapılandırma

  1. Azure portal Tüm >Uygulama HizmetlerineGözat'ıseçin. Ardından Mobile Apps arka ucunuzu seçin. Ayarlar'ın altında App Service Gönder'i seçin. Ardından bildirim hub'ınızın adını seçin.

  2. Windows 'a (WNS) gidin. Ardından, Live Services sitesinden aldığınız Güvenlik anahtarını (istemci gizli anahtarı) ve Paket SID'sini girin. Ardından Kaydet'i seçin.

    Portalda WNS anahtarını ayarlama

Arka ucunuz artık anında iletme bildirimleri göndermek için WNS kullanacak şekilde yapılandırılmıştır.

Windows uygulamanıza anında iletme bildirimleri ekleme

  1. Visual Studio'da bir Windows projesinde App.xaml.cs dosyasını açın ve aşağıdaki deyimleri ekleyin.

    using Newtonsoft.Json.Linq;
    using Microsoft.WindowsAzure.MobileServices;
    using System.Threading.Tasks;
    using Windows.Networking.PushNotifications;
    using <your_TodoItemManager_portable_class_namespace>;
    

    değerini sınıfını içeren TodoItemManager taşınabilir projenizin ad alanıyla değiştirin<your_TodoItemManager_portable_class_namespace>.

  2. App.xaml.cs dosyasına aşağıdaki InitNotificationsAsync yöntemini ekleyin:

    private async Task InitNotificationsAsync()
    {
        var channel = await PushNotificationChannelManager
            .CreatePushNotificationChannelForApplicationAsync();
    
        const string templateBodyWNS =
            "<toast><visual><binding template=\"ToastText01\"><text id=\"1\">$(messageParam)</text></binding></visual></toast>";
    
        JObject headers = new JObject();
        headers["X-WNS-Type"] = "wns/toast";
    
        JObject templates = new JObject();
        templates["genericMessage"] = new JObject
        {
            {"body", templateBodyWNS},
            {"headers", headers} // Needed for WNS.
        };
    
        await TodoItemManager.DefaultManager.CurrentClient.GetPush()
            .RegisterAsync(channel.Uri, templates);
    }
    

    Bu yöntem anında iletme bildirimi kanalını alır ve bildirim hub'ınızdan şablon bildirimleri almak için bir şablon kaydeder. messageParam'ı destekleyen bir şablon bildirimi bu istemciye teslim edilecek.

  3. App.xaml.cs dosyasında değiştiriciyi ekleyerek OnLaunched olay işleyicisi yöntem tanımını güncelleştirin async . Ardından yönteminin sonuna aşağıdaki kod satırını ekleyin:

    await InitNotificationsAsync();
    

    Bu, uygulama her başlatıldığında anında iletme bildirimi kaydının oluşturulmasını veya yenilenmesini sağlar. WNS anında iletme kanalının her zaman etkin olmasını sağlamak için bunu yapmak önemlidir.

  4. Visual Studio için Çözüm Gezgini'de Package.appxmanifest dosyasını açın ve Bildirimler'in altında Bildirim Özellikli'yiEvet olarak ayarlayın.

  5. Uygulamayı derleyin ve hata olmadığını doğrulayın. İstemci uygulamanızın artık Mobile Apps arka ucundan şablon bildirimlerine kaydolması gerekir. Çözümünüzdeki her Windows projesi için bu bölümü yineleyin.

Windows uygulamanızda anında iletme bildirimlerini test edin

  1. Visual Studio'da bir Windows projesine sağ tıklayın ve Başlangıç projesi olarak ayarla'ya tıklayın.
  2. Projeyi oluşturmak ve uygulamayı başlatmak için Çalıştır düğmesine basın.
  3. Uygulamada, yeni bir todoitem için bir ad yazın ve ardından eklemek için artı (+) simgesine tıklayın.
  4. Öğe eklendiğinde bildirim alındığını doğrulayın.

Sonraki adımlar

Anında iletme bildirimleri hakkında daha fazla bilgi edinebilirsiniz:

Ayrıca aşağıdaki öğreticilerden birine de devam edebilirsiniz: