본문 바로가기

IT/iOs

로컬 노티피케이션 보내기 UNMutableNotificationContent

iOS에서 로컬 노티피케이션 보내기

 

UNMutableNotificationContent을 사용하여 로컬 노티피케이션을 보낼 수 있습니다.

노티피케이션의 제목과 메시지, 재생할 소리 또는 앱 뱃지에 할당할 값도 지정할 수 있습니다.

식별자를 사용하여 관련된 알림들을 시각적으로 그룹화를 할 수도 있고 커스텀 런치 이미지를 지정할 수도 있습니다.

바로 노티피케이션을 노출할수있고 지정된 시간에 노출할 수도 있습니다.

 

노티피케이션을 사용하려면 사용자의 허용이 있어야 합니다.

https://developer.apple.com/documentation/usernotifications/asking_permission_to_use_notifications

 

 

 

 

ios10 이상

objective-c 예제입니다.

 

if (@available(iOS 10, *)) {
	UNMutableNotificationContent *content = [UNMutableNotificationContent new];
	content.body = message;
    content.sound = [UNNotificationSound defaultSound];
    content.badge = 0;
    content.userInfo = userInfo;
    NSString *identifier = @"Notification_Identifier";
    UNNotificationRequest *notificationRequest = [UNNotificationRequest requestWithIdentifier:identifier content:content trigger:nil];
	UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
	[center addNotificationRequest:notificationRequest withCompletionHandler:^(NSError * _Nullable error) {
    	if (error != nil) {
        	Log(@"%@", error.description);
        }
      }];
}

 

 

 

swift 예제입니다.

타이틀과 바디 메시지는 로컬라이징이 되어있으며 5초 딜레이를 준 뒤에 노출합니다.

trigger는 노티피케이션이 언제 노출될지 정의합니다.

let content = UNMutableNotificationContent()
content.title = NSString.localizedUserNotificationStringForKey("Hello!", arguments: nil)
content.body = NSString.localizedUserNotificationStringForKey("Hello_message_body", arguments: nil)
content.sound = UNNotificationSound.default()
 
// Deliver the notification in five seconds.
let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 5, repeats: false)
let request = UNNotificationRequest(identifier: "FiveSecond", content: content, trigger: trigger) // Schedule the notification.
let center = UNUserNotificationCenter.current()
center.add(request) { (error : Error?) in
     if let theError = error {
         // Handle any errors
     }
}

 

 

 

 

io10 미만에서 로컬 노티피케이션 보내는 법입니다.

ios10 이상에서는 deprecated 되어 사용할 수 없지만 하위 버전까지 지원하는 앱이라면 알아두어야 하겠습니다.

ios10 미만에서는 UILocalNotification를 사용합니다. 맥락은 UNMutableNotificationContent와 다를 바 없습니다.

 

 

objective-c 예제입니다.

UILocalNotification *notification = [[UILocalNotification alloc] init];
notification.fireDate = [NSDate dateWithTimeIntervalSinceNow:1];
notification.alertBody = message;
notification.timeZone = [NSTimeZone timeZoneWithName:@"KST"];
notification.repeatInterval = 0;
notification.soundName = UILocalNotificationDefaultSoundName;
notification.applicationIconBadgeNumber = 0;
notification.userInfo = userInfo;
[[UIApplication sharedApplication] presentLocalNotificationNow:notification];

 

 

 

 

https://developer.apple.com/documentation/usernotifications/unmutablenotificationcontent