0

iOS 10 および Xcode 8 Beta 2 にUNUsernotificationを使用しています

iOS デバイスのローカル通知用に以下のコードを書きました。

-(void) localNotificationForiOS10:(NSDate *) _reminderDate{

        NSLog(@"_reminderDate %@",_reminderDate);

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

        [calendar setTimeZone:[NSTimeZone localTimeZone]];


        NSDateComponents *components = [calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay|NSCalendarUnitHour|NSCalendarUnitMinute|NSCalendarUnitSecond|NSCalendarUnitTimeZone fromDate:_reminderDate];

        NSLog(@"NSDateComponents %@",components);



        UNMutableNotificationContent *objNotificationContent = [[UNMutableNotificationContent alloc] init];
        objNotificationContent.title = [NSString localizedUserNotificationStringForKey:@"Event Name!" arguments:nil];
        objNotificationContent.body = [NSString localizedUserNotificationStringForKey:@"You have event reminder"
                                                                            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:@"firedate"
                                                                              content:objNotificationContent trigger:trigger];


        /// 3. schedule localNotification
        UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];

        [center addNotificationRequest:request withCompletionHandler:^(NSError * _Nullable error) {
            if (!error) {
                NSLog(@"Local Notification succeeded");
            }
            else {
                NSLog(@"Local Notification failed");
            }
        }];
    }

3 つの異なる、または複数の将来の日付を設定し、定義された日付にイベントのリマインダーが必要です。上記のコードを同じ日付の3つの異なる時間に使用した場合

例: (2016-12-29 18:05 ,2016-12-29 18:10, 2016-12-29 18:15)最後の 1 つだけが通知を出しました。

AppDelegateファイルに位置通知を登録します。


        application.applicationIconBadgeNumber = 0;
        if ([[[UIDevice currentDevice] systemVersion] floatValue] > 10.0f) {
    #if XCODE_VERSION_GREATER_THAN_OR_EQUAL_TO_8
            /// schedule localNotification, the delegate must be set before the application returns from applicationDidFinishLaunching:.
            UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
            center.delegate = self;
    #endif
        } else {
            UILocalNotification *localNotifacation = [self getLocalNotificationFromLaunchOptions:launchOptions];
            if (localNotifacation) {
                NSString *title = localNotifacation.alertBody;

                NSLog(@"Add Title %@",title);
            }
        }

4

1 に答える 1