Mobile/iOS

[iOS]LocalNotification

out of coding 2016. 3. 10. 17:25

LocalNotification을 사용하는 방법.


* UIResponder에서 정의


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

    [self registerForRemoteNotification];

    

    UILocalNotification* localNotification = [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];

    if(localNotification) {

        application.applicationIconBadgeNumber = 0;

    }

    

    return YES;

}


- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification {

    UIApplicationState state = [application applicationState];

    if(state == UIApplicationStateActive) {

        UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"Reminder" message:notification.alertBody delegate:self cancelButtonTitle:@"확인" otherButtonTitles:nil, nil];

        [alert show];

    }

    

    [[NSNotificationCenter defaultCenter] postNotificationName:@"ReloadData" object:self];

    

    application.applicationIconBadgeNumber = 0;

}


- (void)registerForRemoteNotification {

    if ([[[UIDevice currentDevice] systemVersion] floatValue] > 8.0) {

        UIUserNotificationType types = UIUserNotificationTypeSound | UIUserNotificationTypeBadge | UIUserNotificationTypeAlert;

        UIUserNotificationSettings *notificationSettings = [UIUserNotificationSettings settingsForTypes:types categories:nil];

        [[UIApplication sharedApplication] registerUserNotificationSettings:notificationSettings];

    } else {

        [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];

    }

}


#ifdef __IPHONE_8_0

- (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings {

    [application registerForRemoteNotifications];

}

#endif


* Active한 상황에서 다음과 같이 등록.


UILocalNotification* localNotification = [[UILocalNotification alloc] init];

localNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow:5];

localNotification.alertBody = @"Hello world!";

localNotification.timeZone = [NSTimeZone defaultTimeZone];

localNotification.applicationIconBadgeNumber = [[UIApplication sharedApplication] applicationIconBadgeNumber] + 1;

[[NSNotificationCenter defaultCenter] postNotificationName:@"LocalNotification" object:self];

[[UIApplication sharedApplication] scheduleLocalNotification:localNotification];