Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
iOS 12'de, işletim sistemi Bildirim Merkezi'nden ve Ayarlar uygulamasından bir uygulamanın bildirim yönetimi ekranına ayrıntılı bağlantı verebilir. Bu ekran, kullanıcıların uygulamanın gönderdiği çeşitli bildirim türlerini kabul etmelerini ve devre dışı bırakmalarını sağlayacaktır.
Bildirim yönetimi ekranı
Örnek uygulamada, ManageNotificationsViewController kullanıcıların kırmızı bildirimleri ve yeşil bildirimleri bağımsız olarak etkinleştirmesine ve devre dışı bırakmasına olanak tanıyan bir kullanıcı arabirimi tanımlar. Bu bir standarttır UIViewController her bildirim türü için bir UISwitch içeren. Her iki bildirim türü için anahtarın değiştirilmesi, kullanıcı varsayılanlarında kullanıcının bu tür bir bildirim için tercihini kaydeder:
partial void HandleRedNotificationsSwitchValueChange(UISwitch sender)
{
NSUserDefaults.StandardUserDefaults.SetBool(sender.On, RedNotificationsEnabledKey);
}
Not
Bildirim yönetimi ekranı, kullanıcının uygulama için bildirimleri tamamen devre dışı bırakıp devre dışı bırakmadığını da denetler. Öyleyse, tek tek bildirim türlerinin geçişlerini gizler. Bunu yapmak için bildirim yönetimi ekranı:
- Özelliğini çağırır
UNUserNotificationCenter.Current.GetNotificationSettingsAsyncve incelerAuthorizationStatus. - Uygulama için bildirimler tamamen devre dışı bırakılmışsa, tek tek bildirim türleri için geçiş durumlarını gizler.
- Uygulama ön plana her geçtiğinde bildirimlerin devre dışı bırakılıp bırakılmadığını yeniden denetler, çünkü kullanıcı iOS Ayarlar bildirimleri istediği zaman etkinleştirebilir/devre dışı bırakabilir.
Bildirimleri gönderen örnek uygulamanın ViewController sınıfı, bildirimin kullanıcının gerçekten almak istediği türde olduğundan emin olmak için yerel bir bildirim göndermeden önce kullanıcının tercihini denetler:
partial void HandleTapRedNotificationButton(UIButton sender)
{
bool redEnabled = NSUserDefaults.StandardUserDefaults.BoolForKey(ManageNotificationsViewController.RedNotificationsEnabledKey);
if (redEnabled)
{
// ...
Ayrıntılı bağlantı
iOS, Bildirim Merkezi'nden bir uygulamanın bildirim yönetimi ekranına ve Ayarlar uygulamasındaki uygulamanın bildirim ayarlarına ayrıntılı bağlantılar sağlar. Bunu kolaylaştırmak için bir uygulamanın şunları yapması gerekir:
- Uygulamanın bildirim yetkilendirme isteğine geçirerek
UNAuthorizationOptions.ProvidesAppNotificationSettingsbir bildirim yönetimi ekranının kullanılabilir olduğunu belirtin. - yöntemini uygulamasından
OpenSettingsIUNUserNotificationCenterDelegateuygulayın.
Yetkilendirme isteği
İşletim sistemine bir bildirim yönetimi ekranının kullanılabilir olduğunu belirtmek için, bir uygulamanın seçeneği (ihtiyaç duyduğu diğer bildirim teslim seçenekleriyle birlikte) üzerindeki yöntemine RequestAuthorization geçirmesi UNAuthorizationOptions.ProvidesAppNotificationSettingsUNUserNotificationCentergerekir.
Örneğin, örnek uygulamanın AppDelegateiçinde:
public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
{
// Request authorization to send notifications
UNUserNotificationCenter center = UNUserNotificationCenter.Current;
var options = UNAuthorizationOptions.ProvidesAppNotificationSettings | UNAuthorizationOptions.Alert | UNAuthorizationOptions.Sound | UNAuthorizationOptions.Provisional;
center.RequestAuthorization(options, (bool success, NSError error) =>
{
// ...
Open Ayarlar yöntemi
Bir OpenSettings uygulamanın bildirim yönetimi ekranına ayrıntılı bağlantı sağlamak için sistem tarafından çağrılan yöntem, kullanıcıyı doğrudan bu ekrana göndermelidir.
Örnek uygulamada, bu yöntem gerekirse için segue ManageNotificationsViewController gerçekleştirir:
[Export("userNotificationCenter:openSettingsForNotification:")]
public void OpenSettings(UNUserNotificationCenter center, UNNotification notification)
{
var navigationController = Window.RootViewController as UINavigationController;
if (navigationController != null)
{
var currentViewController = navigationController.VisibleViewController;
if (currentViewController is ViewController)
{
currentViewController.PerformSegue(ManageNotificationsViewController.ShowManageNotificationsSegue, this);
}
}
}