0Pricing
Swift Academy · 강의

푸시 알림 등록하기

권한을 요청하고 기기 토큰을 가져옵니다.

푸시 알림 등록하기은(는) CoddyKit의 무료 Swift Academy 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Swift Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Swift Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

푸시가 처음부터 끝까지 작동하는 방식

푸시 알림은 서버에서 Apple 푸시 알림 서비스를 거쳐 특정 기기로 전달됩니다. 기기는 Apple 푸시 알림 서비스가 발급한 디바이스 토큰으로 자신의 신원을 증명합니다. 이 모든 과정에 앞서 사용자가 권한을 허용하고 앱이 등록되어 있어야 합니다.

// Flow: App registers -> APNs returns device token ->
// you send token to your server -> server pushes via APNs

알림 센터

UNUserNotificationCenter는 로컬 및 원격 알림의 모든 작업에 사용하는 단일 객체입니다. 권한 요청, 대리자 설정, 로컬 알림 예약, 설정 확인을 모두 처리합니다. 공유 인스턴스를 가져오십시오.

import UserNotifications
let center = UNUserNotificationCenter.current()
// All notification configuration goes through center

권한 요청

알림을 표시하기 전에 사용자에게 요청해야 합니다. requestAuthorization(options:)는 시스템 프롬프트를 표시하고 사용자가 동의했는지를 반환합니다. .alert, .sound, .badge 중 필요한 옵션만 요청하십시오.

import UserNotifications
func requestAuth() async throws -> Bool {
    let center = UNUserNotificationCenter.current()
    return try await center.requestAuthorization(
        options: [.alert, .sound, .badge])
}

APNs에 등록하기

권한 부여와 등록은 별개의 과정입니다. 권한을 받은 후 또는 권한을 받는 과정과 함께 메인 액터에서 registerForRemoteNotifications()를 호출하십시오. 이 호출은 APNs에 디바이스 토큰을 요청합니다. 반드시 메인 스레드에서 실행해야 합니다.

import UIKit
@MainActor
func registerForPush() {
    UIApplication.shared.registerForRemoteNotifications()
}

디바이스 토큰 받기

성공하면 앱 대리자의 didRegisterForRemoteNotificationsWithDeviceToken이 Data 토큰과 함께 호출됩니다. 이 토큰을 16진수 문자열로 변환해 서버로 보내면 서버가 이 기기를 대상으로 사용할 수 있습니다.

import UIKit
func application(
    _ app: UIApplication,
    didRegisterForRemoteNotificationsWithDeviceToken
    deviceToken: Data) {
    let token = deviceToken.map {
        String(format: "%02x", $0) }.joined()
    print("APNs token:", token)
    // send token to your backend
}

등록 실패 처리

네트워크가 없거나, APNs 자격이 없거나, 지원되지 않는 환경에서 실행하는 경우 등록이 실패할 수 있습니다. 앱이 충돌하는 대신 didFailToRegisterForRemoteNotificationsWithError를 구현해 오류를 기록하고 안정적으로 복구하십시오.

import UIKit
func application(
    _ app: UIApplication,
    didFailToRegisterForRemoteNotificationsWithError
    error: Error) {
    print("Push registration failed:", error)
}

토큰은 변경될 수 있습니다

디바이스 토큰은 영구적이지 않습니다. 사용자가 백업에서 복원하거나 앱을 다시 설치하거나 새 기기로 이동하면 토큰이 변경됩니다. 실행할 때마다 항상 등록하고 최신 토큰을 업로드하여 서버에서 이전 토큰을 교체하십시오.

// Best practice: register on each launch,
// always upload the freshly received token,
// never cache a token as permanent.
let rule = "re-register every launch"
_ = rule

현재 설정 확인

사용자는 나중에 설정에서 권한을 철회할 수 있습니다. 알림에 의존하기 전에 getNotificationSettings를 조회하여 현재 권한 상태와 허용된 기능을 확인하십시오.

import UserNotifications
func currentStatus() async -> UNAuthorizationStatus {
    let settings = await UNUserNotificationCenter
        .current().notificationSettings()
    return settings.authorizationStatus
}

임시 권한

.provisional 옵션을 사용하면 사전에 프롬프트를 표시하지 않고 알림이 조용히 알림 센터에 도착합니다. 사용자가 알림을 계속 사용할지 또는 끌지 선택하기 전에 먼저 사용해 보게 하기에 적합합니다.

import UserNotifications
func requestQuiet() async throws -> Bool {
    try await UNUserNotificationCenter.current()
        .requestAuthorization(
            options: [.alert, .sound, .provisional])
}

필수 기능

Xcode 대상에서 푸시 알림 기능을 활성화하지 않으면 이 중 어느 것도 작동하지 않습니다. 이 기능은 aps-environment 자격을 추가합니다. 백그라운드 전달을 사용하려면 원격 알림이 포함된 백그라운드 모드 기능도 활성화해야 합니다.

// Xcode target > Signing & Capabilities:
//   + Push Notifications
//   + Background Modes > Remote notifications
let caps = "entitlements required"
_ = caps

등록 과정 구성하기

깔끔한 시작 흐름은 다음과 같습니다. 권한을 요청하고, 허용되면 메인 액터에서 원격 알림에 등록합니다. 이후 업로드할 토큰이 대리자 콜백으로 전달됩니다.

import UIKit
import UserNotifications
func setupPush() async {
    let center = UNUserNotificationCenter.current()
    let granted = (try? await center.requestAuthorization(
        options: [.alert, .sound, .badge])) ?? false
    if granted {
        await MainActor.run {
            UIApplication.shared.registerForRemoteNotifications()
        }
    }
}

빠른 확인

권한 부여와 등록의 관계를 떠올려 보십시오.

요약

푸시 등록 방법을 학습하셨습니다:

  • UNUserNotificationCenter를 사용해 .alert/.sound/.badge 권한을 요청합니다.
  • 권한 부여와 등록은 별개이므로, 메인 액터에서 registerForRemoteNotifications()를 호출합니다.
  • Data 토큰을 16진수로 변환해 업로드합니다. 토큰은 변경되므로 앱을 실행할 때마다 다시 등록합니다.
  • Push Notifications 기능을 활성화하고 .provisional 권한 부여도 고려합니다.

자주 묻는 질문

“푸시 알림 등록하기” 강의는 무료인가요?

네 — “푸시 알림 등록하기” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Swift Academy 강의 전체를 잠금 해제할 수 있습니다. Swift Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“푸시 알림 등록하기”에서 뭘 배우나요?

권한을 요청하고 기기 토큰을 가져옵니다. 브라우저에서 직접 실행하는 실습 코드로 Swift Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Swift Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Swift Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.

“푸시 알림 등록하기” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Swift Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Swift Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 푸시 알림 등록하기
  2. 알림 페이로드 처리
  3. 백그라운드 작업과 새로 고침
  4. 알림 액션과 카테고리
← Swift Academy(으)로 돌아가기