Öğ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.
-
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.
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.
Anahtarlık Erişimi'ni seçin, Sertifika Yardımcısı'nı genişletin ve ardından Sertifika Yetkilisinden Sertifika İste'yi seçin.
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.
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.
Farklı Kaydet'te CSR dosyası için bir ad girin, Konum'da konumu seçin ve ardından Kaydet'i 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.
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 + .
Yeni Tanımlayıcı Kaydet ekranında Uygulama Kimlikleri radyo düğmesini seçin. Daha sonra Devam seçeneğini belirleyin.
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.
Anında İletme Bildirimleri: Özellikler bölümündeki Anında İletme Bildirimleri seçeneğini işaretleyin.
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.
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.
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:
- Doğrudan Notification Hub'a yüklenebilecek bir .p12 oluşturun.
- 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
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.
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.
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.
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.
Portal sertifikayı oluşturduğunda İndir düğmesini seçin. Sertifikayı kaydedin ve kaydedildiği konumu unutmayın.
Sertifika indirilir ve bilgisayarınıza İndirilenler klasörünüze kaydedilir.
Not
Varsayılan olarak, indirilen geliştirme sertifikası aps_development.cer olarak adlandırılır.
İ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:
Not
Sertifikanızdaki ad farklı olsa da, adın önüne Apple Development iOS Anında İletme Hizmetleri eklenecektir.
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.
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
Aşağıdaki ayrıntıları not edin:
- Uygulama Kimliği Ön Eki (bu bir Ekip Kimliğidir)
- Paket Kimliği
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.
+ Yeni bir anahtar oluşturmak için düğmeye (veya Anahtar oluştur düğmesine) tıklayın.
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.
İ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.
Anahtarlar'da, yeni oluşturduğunuz anahtara (veya bunun yerine kullanmayı seçtiyseniz mevcut bir anahtara) tıklayın.
Anahtar Kimliği değerini not edin.
.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
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.
Sağlama profili türü olarak Geliştirme'nin altında iOS Uygulama Geliştirme'yi ve ardından Devam'ı seçin.
Ardından, Uygulama Kimliği açılan listesinden oluşturduğunuz uygulama kimliğini seçin ve Devam'ı seçin.
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:
- Kullanılabilir Sertifika Yok seçeneğini görüyorsanız Sertifika Oluştur'u seçin.
- Yazılım bölümünde Apple Geliştirme'yi seçin. Daha sonra Devam seçeneğini belirleyin.
- Yeni Sertifika Oluştur ekranında Dosya Seç'i seçin.
- Daha önce oluşturduğunuz Sertifika İmzalama İsteği sertifikasına göz atın, sertifikayı seçin ve ardından Aç'ı seçin.
- Devam'ı seçin.
- Geliştirme sertifikasını indirin ve kaydedildiği konumu unutmayın.
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.
Sertifika seç penceresinde, yeni oluşturduğunuz geliştirme sertifikasını seçin. Daha sonra Devam seçeneğini belirleyin.
Ardından test için kullanılacak cihazları seçin ve Devam'ı seçin.
Son olarak, Sağlama Profili Adı'nda profil için bir ad seçin ve Oluştur'u seçin.
Yeni sağlama profili oluşturulduğunda İndir'i seçin. Kaydedildiği konumu unutmayın.
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.
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.
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
Sertifika’yı seçin.
Dosya simgesini seçin.
Daha önce dışarı aktardığınız .p12 dosyasını ve ardından Aç'ı seçin.
Gerekirse doğru parolayı belirtin.
Korumalı alan modunu seçin.
Kaydet'i seçin.
SEÇENEK 2: Belirteç tabanlı kimlik doğrulamayı kullanma
Belirteç'i seçin.
Daha önce edindiğiniz aşağıdaki değerleri girin:
- Anahtar Kimliği
- Paket Kimliği
- Ekip Kimliği
- Belirteç
Korumalı Alan'ı seçin
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
Visual Studio'da yeni bir iOS projesi oluşturup Tek Görünüm Uygulaması şablonunu seçin ve İleri'ye tıklayın
Uygulama Adı ve Kuruluş tanımlayıcınızı girin, ardından İleri'ye ve ardından Oluştur'a tıklayın
Çö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.
Çö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.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.
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 ilehubname
DefaultListenSharedAccessSignature
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>";
içine
AppDelegate.cs
aşağıdaki using deyimini ekleyin:using WindowsAzure.Messaging.NotificationHubs; using UserNotifications
içinde
AppDelegate.cs
uygulamasınıMSNotificationHubDelegate
oluşturun:public class AzureNotificationHubListener : MSNotificationHubDelegate { public override void DidReceivePushNotification(MSNotificationHub notificationHub, MSNotificationHubMessage message) { } }
içinde
AppDelegate.cs
, aşağıdaki kodla eşleşecek şekilde güncelleştirinFinishedLaunching()
: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; }
içinde
AppDelegate.cs
sınıfı içinAzureNotificationHubListener
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); }
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.
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: