2017-02-11 15 views
-1

UNAlertStyle определяет, представлено ли уведомление как баннер или предупреждение. Текущие настройки авторизации для приложения можно просмотреть с помощью getNotificationSettingsWithCompletionHandler. Если UNAuthorizationOptionAlert был запрошен (и разрешен), стиль по умолчанию выглядит как UNAlertStyleBanner, но я не могу найти способ указать, что локальное уведомление будет представлено как предупреждение, отличное от пользователя, входящего в настройки notificatinon.Как установить UNAlertStyle?

Настройки, возникающие в результате запроса UNAuthorizationOptionAlert, для меня не имеют смысла. Следующий тест приложение запрашивает разрешение на получение оповещений и звуков, а затем NSLog в результирующие настройки уведомлений: (! Но CarPlay, не было предложено Включено)

#import "AppDelegate.h" 
#import <UserNotifications/UserNotifications.h> 

@interface AppDelegate() { 
    UNUserNotificationCenter* center; 
} 
@end 

@implementation AppDelegate 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 

    center = [UNUserNotificationCenter currentNotificationCenter]; 

    // request authorization for sounds and alerts 
    [center requestAuthorizationWithOptions:(UNAuthorizationOptionAlert | UNAuthorizationOptionSound) 
          completionHandler:^(BOOL granted, NSError * _Nullable error) { 
           NSLog(@"requestAuthorizationWithOptions granted: %i", granted); 

           // check resulting notification settings 
           [center getNotificationSettingsWithCompletionHandler:^(UNNotificationSettings * _Nonnull settings) { 
            NSLog(@"getNotificationSettings: %@", settings); 
           }]; 
          }]; 

    return YES; 
} 

Полученные параметры показывают сигналы NotSupported:

authorizationStatus: Authorized, 
notificationCenterSetting: Enabled, 
soundSetting: Enabled, 
badgeSetting: NotSupported, 
lockScreenSetting: Enabled, 
alertSetting: NotSupported, 
carPlaySetting: Enabled, 
alertStyle: Banner 

Любые предложения?

+1

«но я не могу найти способ указать, что локальное уведомление должно быть представлено как предупреждение, отличное от пользователя, входящего в настройки notificatinon« Исправить. Это вопрос? Тогда ответ: вы правы, это зависит от пользователя, а не от вас. – matt

+0

Но другие разрешения на уведомления предлагаются приложением и либо принимаются, либо отклоняются пользователем. Пользователю не нужно вручную входить в настройки и индивидуально разрешать разрешения, необходимые для выполнения его функцией. Является ли это действительно другим, чем другие? soundSetting? – mark

+0

Я не знаю, что вы думаете, что вы подразумеваете под этим. Есть только четыре варианта, которые вы можете запросить: https://developer.apple.com/reference/usernotifications/unauthorizationoptions. Ни один из них не различает стиль баннера оповещения и стиль модального предупреждения. По умолчанию используется стиль баннера, и вы, приложение, не можете его изменить. – matt

ответ

0

, но я не могу найти способ указать, что локальное уведомление будет представлено как предупреждение, кроме пользователь собирается в настройки notificatinon

Вы не можете найти его, потому что не существует , Баннер - это формат уведомлений по умолчанию, и ваше приложение не может его изменить. UNAlertStyle Не настраивается приложением; он сообщает о настройке пользователя, вот и все.

+0

Apple заявляет, что он работает по назначению. Очевидно, что оповещения считаются достаточно разрушительными для пользователей, что они требуют явной авторизации через настройки устройства. – mark