Öğretici: Azure Notification Hubs kullanarak Xamarin.iOS uygulamalarına anında iletme bildirimleri gönderme

Genel bakış

Bu öğretici, bir iOS uygulamasına anında iletme bildirimleri göndermek için Azure Notification Hubs'ın nasıl kullanılacağını size gösterir. Apple Anında İletilen Bildirim Servisi'ni (APNs) kullanarak anında iletme bildirimleri alan boş bir Xamarin.iOS uygulaması oluşturursunuz.

İşiniz bittiğinde, uygulamanızı çalıştıran tüm cihazlara anında iletme bildirimleri yayımlamak için bildirim hub’ınızı kullanabilirsiniz. Tamamlanan kodu NotificationHubs uygulaması örneğinde bulabilirsiniz.

Bu öğreticide, aşağıdaki görevleri gerçekleştirmek için kod oluşturur/güncelleştirirsiniz:

  • Sertifika imzalama isteği dosyası oluşturma
  • Anında iletme bildirimleri için uygulamanızı kaydetme
  • Uygulama için bir sağlama profili oluşturun
  • iOS anında iletme bildirimleri için bildirim hub’ınızı yapılandırma
  • Test amaçlı anında iletme bildirimleri gönderme

Önkoşullar

  • Azure aboneliği. Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir Azure hesabı oluşturun.

  • Xcode'un en son sürümü

  • iOS 10 (veya sonraki bir sürümü) uyumlu bir cihaz

  • Apple Developer Program üyeliği.

  • Mac için Visual Studio

    Not

    iOS anında iletme bildirimlerinin yapılandırma gereksinimleri nedeniyle, örnek uygulamayı benzetici yerine fiziksel bir iOS cihazında (iPhone veya iPad) dağıtmanız ve test etmeniz gerekir.

Bu öğreticiyi tamamlamak Xamarin.iOS uygulamalarına ilişkin diğer tüm Notification Hubs öğreticileri için önkoşuldur.

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 kavramlarla ilgili daha fazla bilgi için resmi Apple Anında İletilen Bildirim Servisi belgelerine bakın.

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

  1. Mac’inizde Anahtarlık Erişim 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.

    Use Keychain Access to request a new certificate

    Not

    Varsayılan olarak, AnahtarLık Erişimi listedeki ilk öğeyi seçer. Sertifikalar kategorisindeyseniz ve Apple Worldwide Developer Relations Certification Authority listedeki ilk öğe değilse bu sorun olabilir. CSR(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çildiğinden emin olun.

  3. Kullanıcı E-posta Adresinizi seçin, Ortak Ad değerinizi girin, Diske kaydedildi'yi belirttiğinizden emin olun ve ardından Devam'ı seçin. Gerekli olmadığından CA E-posta Adresini boş bırakın.

    Required certificate information

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

    Choose a file name for the certificate

    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 kaydolmadıysanız Apple Geliştirici Merkezi'ndeki iOS Sağlama Portalı'na göz atın. Apple kimliğinizle portalda oturum açın ve Tanımlayıcılar'ı seçin. Ardından yeni bir uygulama kaydetmek için öğesini seçin + .

    iOS Provisioning Portal App IDs page

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

    iOS Provisioning Portal register new ID page

  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ı formunun Paket Kimliğini 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 Provisioning Portal register app ID page

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

      Form to register a new App ID

      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.

      Confirm new App ID

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

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

Notification Hubs için Sertifika Oluşturma

Bildirim hub'ını APNS ile çalışmasını sağlamak için bir sertifika gereklidir. Bu işlem 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).

ApNS için Belirteç tabanlı (HTTP/2) kimlik doğrulamasında belirtildiği gibi daha yeni yaklaşımın bir dizi avantajı vardır (sertifikaları kullanmaya kıyasla). 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.

    Edit App ID page

  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.

    Create certificate for App ID button

    Yeni sertifika oluştur ekranı görüntülenir.

    Not

    Bu öğreticide, uygulamanızın benzersiz bir cihaz belirteci oluşturmak için kullandığı bir geliştirme sertifikası kullanılı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 yükleyin. Daha sonra Devam seçeneğini belirleyin.

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

    Generated certificate download page

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

    Locate certificate file in the Downloads folder

    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:

    Keychain access certificates list showing new certificate

    Not

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

  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 ve ardından Kaydet'i seçin.

    Export certificate as p12 format

    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. BUNLAR, APN'lerle kimlik doğrulamasını etkinleştirmek için kullanılır.

    Not

    .p12 dosya adınız ve konumunuz bu öğreticide görüntülenenden 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 ve Profiller'e dönüp 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 (APNs) seçeneğini işaretleyin ve ardından Devam'a tıklayın 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, 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 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 ÖZEL ANAHTAR----- ile -----END ÖZEL ANAHTAR----- 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)
  • .p8 anahtar değeri gibi belirteç 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 ve 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.

    Provisioning profile list

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

    Select the App ID

  4. Sertifika seç 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 geçin. 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 ve 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.

    Choose a provisioning profile name

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

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

Uygulamanızı App Store veya Geçici dağıtım profiliyle derlediyseniz, Uygulama Modu için Üretim'i kullanın. Bu, cihazınızın uygulamanızı mağazadan satın alan kullanıcılara anında iletme bildirimleri göndermesine olanak sağlar.

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.

    Configure APNs certification in Azure portal

  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ırdıysanız. Ayrıca uygulamanızı kaydetmek ve anında iletme bildirimleri göndermek için bağlantı dizesi sahipsiniz.

Uygulamanızı bildirim hub'ına bağlama

Yeni proje oluşturma

  1. Visual Studio'da yeni bir iOS projesi oluşturup Tek Görünüm Uygulaması şablonunu seçin ve İleri'ye tıklayın

    Visual Studio - Select Application Type

  2. Uygulama Adı ve Kuruluş tanımlayıcınızı girin, ardından İleri'ye ve ardından Oluştur'a tıklayın

  3. Çözüm görünümünde Kimlik bölümündeki Info.plist dosyasına çift tıklayarak Paket Tanımlayıcısının sağlama profili oluştururken kullandığınızla eşleştiğinden emin olun. İmzalama bölümünde Ekip altında Geliştirici hesabınızın seçili olduğundan, "İmzalamayı otomatik olarak yönet" seçeneğinin belirlendiğinden ve İmza Sertifikası ile Sağlama Profili bilgilerinizin otomatik olarak seçildiğinden emin olun.

    Visual Studio- iOS App Config

  4. Çözüm görünümünde, öğesine çift tıklayın Entitlements.plist ve Anında İletme Bildirimlerini Etkinleştir seçeneğinin işaretli olduğundan emin olun.

    Visual Studio- iOS Entitlements Config

  5. Azure Messaging paketini ekleyin. Çözüm görünümünde projeye sağ tıklayıp Ekle>NuGet Paketleri Ekle'yi seçin. Xamarin.Azure.NotificationHubs.iOS araması yapıp projeyi pakete ekleyin.

  6. Sınıfınıza yeni bir dosya ekleyin, dosyayı Constants.cs adlandırın ve aşağıdaki değişkenleri ekleyin ve dize değişmez değer yer tutucularını ve daha önce belirtilen ile hubnameDefaultListenSharedAccessSignature değiştirin.

    // Azure app-specific connection string and hub path
    public const string ListenConnectionString = "<Azure DefaultListenSharedAccess Connection String>";
    public const string NotificationHubName = "<Azure Notification Hub Name>";
    
  7. içine AppDelegate.csaşağıdaki using deyimini ekleyin:

    using WindowsAzure.Messaging.NotificationHubs;
    using UserNotifications
    
  8. içinde AppDelegate.csuygulamasını MSNotificationHubDelegate oluşturun:

    public class AzureNotificationHubListener : MSNotificationHubDelegate
    {
        public override void DidReceivePushNotification(MSNotificationHub notificationHub, MSNotificationHubMessage message)
        {
    
        }
    }
    
  9. içinde AppDelegate.cs, aşağıdaki kodla eşleşecek şekilde güncelleştirin FinishedLaunching() :

    public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
    {
        // Set the Message listener
        MSNotificationHub.SetDelegate(new AzureNotificationHubListener());
    
        // Start the SDK
        MSNotificationHub.Start(ListenConnectionString, NotificationHubName);
    
        return true;
    }
    
  10. içinde AppDelegate.cssınıfı için AzureNotificationHubListener yöntemini uygulayınDidReceivePushNotification:

    public override void DidReceivePushNotification(MSNotificationHub notificationHub, MSNotificationHubMessage message)
    {
        // This sample assumes { aps: { alert: { title: "Hello", body: "World" } } }
        var alertTitle = message.Title ?? "Notification";
        var alertBody = message.Body;
    
        var myAlert = UIAlertController.Create(alertTitle, alertBody, UIAlertControllerStyle.Alert);
        myAlert.AddAction(UIAlertAction.Create("OK", UIAlertActionStyle.Default, null));
        UIApplication.SharedApplication.KeyWindow.RootViewController.PresentViewController(myAlert, true, null);
    }
    
  11. Cihazınızda uygulamayı çalıştırın.

Test amaçlı anında iletme bildirimleri 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 normal olarak, uyumlu bir kitaplık kullanılarak Mobile Apps veya ASP.NET gibi bir arka uç hizmetine gönderilir. Arka ucunuz için uygun bir kitaplık yoksa bildirim iletileri göndermek için doğrudan REST API de kullanabilirsiniz.

Sonraki adımlar

Bu öğreticide, arka uca kayıtlı olan tüm iOS cihazlarınıza yayın bildirimleri gönderdiniz. Belirli iOS cihazlarına nasıl anında iletme bildirimleri gönderileceğini öğrenmek için aşağıdaki öğreticiye ilerleyin: