5

ios 10 için UNUserNotificationCenter kullanıyorum. Test için, şu andan itibaren 10 saniye boyunca yerel bir bildirim ayarlıyorum.Yerel bildirimler ios10 içinde başlatılamıyor

Bu denedim budur,

- (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 
    } 
} 

Ben günlüğü görebilirsiniz "Yerel Bildirim başarılı". Ancak yerel bildirim cihazda ateş etmiyor.

AppDelegate, ben

ben yanlış yaptığım
- (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(); 
} 

eklendi? Uygulama bildirimleri neden tetiklenmiyor?

+0

http://stackoverflow.com/questions/37807302/add-local-notification-in bir zaman tetiği kullanın -ios10-swift-3? rq = 1 – Sanju

+0

cihazınızın zamanını ve tetik süresini kontrol edin - http://stackoverflow.com/questions/39941778/how-to-schedule-a-local-notification-in-ios-10-objective -c? rq = 1 – Sanju

+0

Xcode ayarlarından push bildirimlerini etkinleştirdiniz mi? – Stefan

cevap

6

Seti NSDateComponents gibi:

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

[çoklu bildirimler] ayarlanamıyor (http://stackoverflow.com/questions/40216915/multiple-unusernotifications-not-firing) .... – NAZIK

+0

Takvimden 'tarih bileşenleri oluşturmalısınız. dateComponents (_ components: Tarih: Date) 'işlevinden öğesini ayarlayın. Tarih bileşenlerinin diğer takvimlerden başlatılması 'dateComponents ...' fonksiyonlarının bildirimi planlamıyor gibi görünüyor. (Swift 3) –

+0

@NAZIK, çoklu bildirim için nasıl çalıştı? Aynı konuda sıkışmış durumdayım. Lütfen bir göz atın: https://stackoverflow.com/questions/44132879/ios-local-notification-not-firing-second-time-but-shows-in-getpendingnotificatio –

0

Veya bunun yerine bir takvim tetik

-1
@IBAction func sendNotification(_ sender: Any) { 

    let content = UNMutableNotificationContent() 
    content.title = "Hello" 
    content.body = "Ved Rauniyar !!!" 
    // content.badge = 1 
    content.sound = UNNotificationSound.default() 
    // Deliver the notification in five seconds. 
    let trigger = UNTimeIntervalNotificationTrigger.init(timeInterval: 5, repeats: false) 
    let url = Bundle.main.url(forResource:"ved", withExtension: "png") 
    let attachment = try? UNNotificationAttachment(identifier: "FiveSecond", 
                url: url!, 
                options: [:]) 
    content.attachments = [attachment!] 
    let request = UNNotificationRequest.init(identifier: "FiveSecond", content: content, trigger: trigger) 
    // Schedule the notification. 
    let center = UNUserNotificationCenter.current() 
    center.add(request) { (error) in 
     // print(error!) 
    } 
}