Подтвердить что ты не робот

Спросить у пользователя разрешение показывать предупреждение при запуске локального уведомления

Я хочу показать предупреждение при локальном уведомлении, но для этого я должен попросить разрешения, поскольку он говорит мне, когда я запускаю приложение на своем iPhone:

Попытка запланировать местное уведомление {fire date = Friday 13 June 2014 12 h 10 min 27 s Центральноевропейское летнее время, часовой пояс = (null), интервал повторения = 0, число повторений = UILocalNotificationInfiniteRepeatCount, следующая дата огня = пятница 13 июня 2014 г. 12 ч. 10 мин. 27 с. Центральное европейское летнее время, информация пользователя = (null)} с предупреждением, но не получившим от пользователя разрешения на отображение предупреждений.

Как я могу это сделать? Вот код такой, какой он есть сейчас:

    UILocalNotification *localNotif = [[UILocalNotification alloc] init];
    localNotif.fireDate = [[NSDate date] dateByAddingTimeInterval:timeUntilNotification];
    localNotif.soundName = UILocalNotificationDefaultSoundName;
    localNotif.alertBody = @"ZEIT!";
    localNotif.alertAction = @"Show me the Timer!";
    localNotif.applicationIconBadgeNumber = [[UIApplication sharedApplication] applicationIconBadgeNumber] +1;


    [[UIApplication sharedApplication] scheduleLocalNotification:localNotif];
4b9b3361

Ответ 1

добавьте этот код, он покажет предупреждение, чтобы спросить пользователя о разрешении.

if ([UIApplication instancesRespondToSelector:@selector(registerUserNotificationSettings:)]) {
    [[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeSound|UIUserNotificationTypeBadge
                                                                                                          categories:nil]];
}

вы можете добавить этот код в приложение: didFinishLaunchingWithOptions;, так что приложение спросит вашего пользователя, когда оно запустит приложение, или вы можете добавить этот код, когда вы устанавливаете локальное уведомление, это зависит от вас.

Ответ 2

蘇健豪 ответ хороший.

В Swift это выглядит так:

let registerUserNotificationSettings = UIApplication.instancesRespondToSelector("registerUserNotificationSettings:")

if registerUserNotificationSettings { 
    var types: UIUserNotificationType = UIUserNotificationType.Alert | UIUserNotificationType.Sound     
    UIApplication.sharedApplication().registerUserNotificationSettings(UIUserNotific‌​ationSettings(forTypes: types, categories: nil))
} 

Также см. здесь: Запросить разрешение пользователя на получение UILocalNotifications в iOS 8

Ответ 3

//register notifications
if([application respondsToSelector:@selector(registerUserNotificationSettings:)]) //ios 8+
{
    [application registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeBadge|UIUserNotificationTypeSound categories:nil]];
    [application registerForRemoteNotifications];
}
else // ios 7 or less
{
    [application registerForRemoteNotificationTypes:UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge];
}

Ответ 4

В быстром языке....

var type = UIUserNotificationType.Badge | UIUserNotificationType.Alert | UIUserNotificationType.Sound;
var setting = UIUserNotificationSettings(forTypes: type, categories: nil);
UIApplication.sharedApplication().registerUserNotificationSettings(setting);
UIApplication.sharedApplication().registerForRemoteNotifications();

Ответ 5

Попробуйте это для Objective-C

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        // Override point for customization after application launch.
        NSLog(@"didFinishLaunchingWithOptions");

        if ([UIApplication instancesRespondToSelector:@selector(registerUserNotificationSettings:)]) {
            [[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeSound categories:nil]];
        }

        return YES; 
    }