Aracılığıyla paylaş


Xamarin.iOS'ta bildirimler

Önemli

Bu bölümdeki bilgiler iOS 9 ve öncesi ile ilgili. iOS 10 ve üzeri için lütfen Kullanıcı bildirim çerçevesi kılavuzuna bakın.

iOS' un kullanıcıya bir bildirim alındığını göstermek için üç yolu vardır:

  • Ses veya titreşim - iOS, kullanıcıları bilgilendirmek için bir ses çalabilir. Ses devre dışı bırakılırsa cihaz titreşecek şekilde yapılandırılabilir.
  • Uyarılar - Ekranda bildirimle ilgili bilgiler içeren bir iletişim kutusu görüntüleyebilirsiniz.
  • Rozetler - Bir bildirim yayımlandığında, uygulama simgesinde bir sayı görüntülenebilir (rozetli).

iOS ayrıca kullanıcıya hem yerel hem de uzak tüm bildirimleri görüntüleyen bir Bildirim Merkezi sağlar. Kullanıcılar ekranın üst kısmından aşağı çekerek buna erişebilir:

Bildirim Merkezi

iOS'ta yerel bildirimler oluşturma

iOS, yerel bildirimleri oluşturmayı ve işlemeyi oldukça basit hale getirir. İlk olarak, iOS 8 uygulamaların bildirimleri görüntülemek için kullanıcının iznini istemesini gerektirir. Genellikle AppDelegate'in FinishedLaunching yönteminde yerel bildirim göndermeye çalışmadan önce aşağıdaki kodu uygulamanıza ekleyin:

var notificationSettings = UIUserNotificationSettings.GetSettingsForTypes(
    UIUserNotificationType.Alert | UIUserNotificationType.Badge | UIUserNotificationType.Sound, null
);
application.RegisterUserNotificationSettings(notificationSettings);

Yerel bildirim gönderme özelliğini onaylama

Yerel bildirim zamanlamak için bir UILocalNotification nesne oluşturun, öğesini ayarlayın FireDateve nesnedeki ScheduleLocalNotification UIApplication.SharedApplication yöntemi aracılığıyla zamanlayın. Aşağıdaki kod parçacığı, gelecekte bir dakika tetiklenecek bir bildirim zamanlamayı ve ileti içeren bir uyarı görüntülemeyi gösterir:

UILocalNotification notification = new UILocalNotification();
notification.FireDate = NSDate.FromTimeIntervalSinceNow(15);
//notification.AlertTitle = "Alert Title"; // required for Apple Watch notifications
notification.AlertAction = "View Alert";
notification.AlertBody = "Your 15 second alert has fired!";
UIApplication.SharedApplication.ScheduleLocalNotification(notification);

Aşağıdaki ekran görüntüsünde bu uyarının nasıl göründüğü gösterilmektedir:

Örnek bir uyarı

Kullanıcı bildirimlere izin vermemeyi seçerse hiçbir şeyin görüntülenmeyeceğini unutmayın.

Uygulama simgesine bir sayı içeren bir rozet uygulamak istiyorsanız, bunu aşağıdaki satır kodunda gösterildiği gibi ayarlayabilirsiniz:

notification.ApplicationIconBadgeNumber = 1;

Simgeyle bir ses çalmak için bildirimdeki SoundName özelliğini aşağıdaki kod parçacığında gösterildiği gibi ayarlayın:

notification.SoundName = UILocalNotification.DefaultSoundName;

Bildirim sesi 30 saniyeden uzunsa, iOS bunun yerine varsayılan sesi çalar.

Önemli

iOS simülatöründe temsilci bildirimini iki kez tetikleyen bir hata var. Bu sorun, uygulamayı bir cihazda çalıştırırken oluşmamalıdır.

Bildirimleri işleme

iOS uygulamaları uzak ve yerel bildirimleri neredeyse tamamen aynı şekilde işler. Bir uygulama çalışırken, ReceivedLocalNotification yöntemi veya sınıfındaki ReceivedRemoteNotification AppDelegate yöntemi çağrılır ve bildirim bilgileri parametre olarak geçirilir.

Uygulama bir bildirimi farklı şekillerde işleyebilir. Örneğin, uygulama yalnızca kullanıcılara bir olayı anımsatmak için bir uyarı görüntüleyebilir. Ya da bildirim, kullanıcıya bir işlemin tamamlandığını belirten bir uyarı görüntülemek için (dosyaları sunucuyla eşitleme gibi) görüntülemek için de kullanılabilir.

Aşağıdaki kod, yerel bir bildirimi işlemeyi ve uyarı görüntülemeyi ve rozet numarasını sıfıra sıfırlamayı gösterir:

public override void ReceivedLocalNotification(UIApplication application, UILocalNotification notification)
{
    // show an alert
    UIAlertController okayAlertController = UIAlertController.Create(notification.AlertAction, notification.AlertBody, UIAlertControllerStyle.Alert);
    okayAlertController.AddAction(UIAlertAction.Create("OK", UIAlertActionStyle.Default, null));

    Window.RootViewController.PresentViewController(okayAlertController, true, null);

    // reset our badge
    UIApplication.SharedApplication.ApplicationIconBadgeNumber = 0;
}

Uygulama çalışmıyorsa, iOS sesi çalar ve/veya simge rozetini uygun şekilde güncelleştirir. Kullanıcı uyarıyla ilişkili uygulamayı başlattığında, uygulama başlatılır ve FinishedLaunching uygulama temsilcisindeki yöntem çağrılır ve bildirim bilgileri parametresi aracılığıyla launchOptions geçirilir. Seçenekler sözlüğü anahtarını UIApplication.LaunchOptionsLocalNotificationKeyiçeriyorsa, AppDelegate uygulamanın yerel bir bildirimden başlatıldığını bilir. Aşağıdaki kod parçacığı bu işlemi gösterir:

// check for a local notification
if (launchOptions.ContainsKey(UIApplication.LaunchOptionsLocalNotificationKey))
{
    var localNotification = launchOptions[UIApplication.LaunchOptionsLocalNotificationKey] as UILocalNotification;
    if (localNotification != null)
    {
        UIAlertController okayAlertController = UIAlertController.Create(localNotification.AlertAction, localNotification.AlertBody, UIAlertControllerStyle.Alert);
        okayAlertController.AddAction(UIAlertAction.Create("OK", UIAlertActionStyle.Default, null));

        Window.RootViewController.PresentViewController(okayAlertController, true, null);

        // reset our badge
        UIApplication.SharedApplication.ApplicationIconBadgeNumber = 0;
    }
}

Uzaktan bildirim için, launchOptions uzaktan bildirim yükünü içeren bir ile ilişkilendirilecektir LaunchOptionsRemoteNotificationKey NSDictionary . Bildirim yükünü , badgeve sound anahtarları aracılığıyla alertayıklayabilirsiniz. Aşağıdaki kod parçacığı, uzak bildirimlerin nasıl alınacağınızı gösterir:

NSDictionary remoteNotification = options[UIApplication.LaunchOptionsRemoteNotificationKey];
if(remoteNotification != null)
{
    string alert = remoteNotification["alert"];
}

Özet

Bu bölümde Xamarin.iOS'ta nasıl bildirim oluşturulacağı ve yayımlanması gösterildi. Bir uygulamanın içindeki yöntemini veya yöntemini AppDelegategeçersiz kılarak ReceivedLocalNotification bildirimlere nasıl tepki gösterebileceğini ReceivedRemoteNotification gösterir.