ios10中未触发本地通知 [英] Local notifications are not firing in ios10

查看:107
本文介绍了ios10中未触发本地通知的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在为ios 10使用 UNUserNotificationCenter 。对于测试,我从当前时间开始设置本地通知10秒。

I'm using UNUserNotificationCenter for ios 10. For testing, I'm setting a local notification for 10 seconds from current time.

这是我试过的,

- (void)viewDidLoad {
    [super viewDidLoad];
     UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
     [center requestAuthorizationWithOptions:(UNAuthorizationOptionBadge | UNAuthorizationOptionSound | UNAuthorizationOptionAlert)
                          completionHandler:^(BOOL granted, NSError * _Nullable error) {
                              if (!error) {
                                  NSLog(@"request succeeded!");
                                  [self set10Notifs];
                              }
                          }];    
}

-(void) set10Notifs
{
    if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"10.0")) {
    #if XCODE_VERSION_GREATER_THAN_OR_EQUAL_TO_8
     NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];

    [calendar setTimeZone:[NSTimeZone localTimeZone]];        

    NSDateComponents *components = [calendar components:NSCalendarUnitTimeZone fromDate:[[NSDate date] dateByAddingTimeInterval:10]];

    UNMutableNotificationContent *objNotificationContent = [[UNMutableNotificationContent alloc] init];
    objNotificationContent.title = [NSString localizedUserNotificationStringForKey:@"Prayer!" arguments:nil];
    objNotificationContent.body = [NSString localizedUserNotificationStringForKey:@"Time now"
                                                                        arguments:nil];
    objNotificationContent.sound = [UNNotificationSound defaultSound];

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


    UNNotificationRequest *request = [UNNotificationRequest requestWithIdentifier:@"Prayer"
                                                                          content:objNotificationContent trigger:trigger];
    UNUserNotificationCenter *userCenter = [UNUserNotificationCenter currentNotificationCenter];
    [userCenter addNotificationRequest:request withCompletionHandler:^(NSError * _Nullable error) {
        if (!error) {
            NSLog(@"Local Notification succeeded");
        }
        else {
            NSLog(@"Local Notification failed");
        }
    }];
#endif
    }
}

我可以看到日志本地通知成功。但本地通知未在设备中触发。

I can see the log "Local Notification succeeded". But the local notification is not firing in the device.

在Appdelegate中,我添加了

In Appdelegate, I added

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  // Override point for customization after application launch.
    UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
    center.delegate = self;
    return YES;
}
- (void)userNotificationCenter:(UNUserNotificationCenter *)center
   willPresentNotification:(UNNotification *)notification
     withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler {
    NSLog(@"Notification is triggered");
     completionHandler(UNNotificationPresentationOptionBadge);
} 

-(void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void(^)())completionHandler{
    NSLog(@"User Info : %@",response.notification.request.content.userInfo);
    completionHandler();
}

我做错了什么?
为什么不解雇应用程序通知?

What did I do wrong? Why the app notifications not fired?

推荐答案

设置NSDateComponents,如:

Set NSDateComponents like:

NSDateComponents *components = [calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay|NSCalendarUnitHour|NSCalendarUnitMinute|NSCalendarUnitSecond|NSCalendarUnitTimeZone fromDate:[[NSDate date] dateByAddingTimeInterval:10]];

这篇关于ios10中未触发本地通知的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆