【问题标题】:Objective-C: Set timer to display a reminder using UNUserNotificationCenterObjective-C:使用 UNUserNotificationCenter 设置计时器以显示提醒
【发布时间】:2018-06-14 07:33:35
【问题描述】:

我希望在适当的时候在应用程序的前台或后台显示自定义提醒或弹出消息。我试过this link ,但似乎没有用。

当我启动我的应用程序时没有发生任何事情。它会说本地通知成功,但我没有看到任何弹出的自定义消息框。请帮忙。

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

    //===Every 20 secs I will call setSchedule method
    NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:20 target:self selector:@selector(setSchedule) userInfo:nil repeats:YES];
    return YES;
}

-(void)setSchedule{

    NSDate *now = [NSDate date];

    NSLog(@"NSDate:%@",now);

    NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];

    [calendar setTimeZone:[NSTimeZone localTimeZone]];

    NSDateComponents *components = [calendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit|NSHourCalendarUnit|NSMinuteCalendarUnit|NSSecondCalendarUnit|NSTimeZoneCalendarUnit fromDate:now];

    UNMutableNotificationContent *objNotificationContent = [[UNMutableNotificationContent alloc] init];

    objNotificationContent.title = [NSString localizedUserNotificationStringForKey:@"Notification!" arguments:nil];
    objNotificationContent.body = [NSString localizedUserNotificationStringForKey:@"This is local notification message!"                                                                   arguments:nil]; 
    objNotificationContent.sound = [UNNotificationSound defaultSound];

    /// 4. update application icon badge number
    objNotificationContent.badge = @([[UIApplication sharedApplication] applicationIconBadgeNumber] + 1);

    UNCalendarNotificationTrigger *trigger = [UNCalendarNotificationTrigger triggerWithDateMatchingComponents:components repeats:NO];

    UNNotificationRequest *request = [UNNotificationRequest requestWithIdentifier:@"ten"                                                                        content:objNotificationContent trigger:trigger];

    /// 3. schedule localNotification
    UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
    center.delegate = self;
    [center addNotificationRequest:request withCompletionHandler:^(NSError * _Nullable error) {
        if (!error) {
            NSLog(@"Local Notification succeeded");
        }
        else {
            NSLog(@"Local Notification failed");
        }
    }];

}    

【问题讨论】:

    标签: ios objective-c push-notification localnotification unnotificationrequest


    【解决方案1】:

    首先,UNUserNotification 不会在前台触发。

    第二件事,如果您想每 20 秒或任何时间间隔触发一次通知,请不要使用 UNCalendarNotificationTrigger

    检查下面的触发方法并在您的代码中设置。

    let trigger2 = UNTimeIntervalNotificationTrigger(timeInterval: YourInterval, repeats: true)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-05
      • 1970-01-01
      • 2014-09-03
      • 1970-01-01
      • 2011-02-27
      • 2015-06-24
      相关资源
      最近更新 更多