[swift] Swift Moya에서 푸시 알림 기능 구현하기

Moya는 Swift에서 네트워크 작업을 추상화해주는 라이브러리입니다. 이번에는 Moya를 사용하여 iOS 앱에서 푸시 알림 기능을 구현하는 방법을 알아보겠습니다.

1. Firebase 설정

먼저 Firebase에 프로젝트를 생성하고, Firebase Cloud Messaging (FCM)을 활성화해야 합니다. Firebase 콘솔에서 자신의 프로젝트를 선택하고, FCM 설정 페이지로 이동하여 서버 키를 생성합니다.

2. Moya 설치

프로젝트의 Podfile에 아래와 같이 Moya를 추가합니다.

pod 'Moya'

터미널에서 pod install 명령어를 실행하여 Moya를 설치합니다.

3. MoyaProvider 생성

MoyaProvider는 Moya 작업을 처리하는데 사용됩니다. 푸시 알림을 전송하기 위해 MoyaProvider를 생성하는 방법은 다음과 같습니다.

import Moya

let provider = MoyaProvider<MyAPI>()

4. API 작성

API 작성을 위해 TargetType을 구현해야 합니다. 푸시 알림을 보내기 위한 API를 추가하는 예제 코드는 다음과 같습니다.

import Moya

enum MyAPI {
    case sendPushNotification(message: String, token: String)
}

extension MyAPI: TargetType {
    var baseURL: URL {
        return URL(string: "https://fcm.googleapis.com/fcm/")!
    }

    var path: String {
        switch self {
        case .sendPushNotification:
            return "send"
        }
    }

    var method: Moya.Method {
        return .post
    }

    var sampleData: Data {
        return Data()
    }

    var task: Task {
        switch self {
        case .sendPushNotification(let message, let token):
            let parameters: [String: Any] = [
                "to": token,
                "notification": [
                    "body": message
                ]
            ]
            return .requestParameters(parameters: parameters, encoding: JSONEncoding.default)
        }
    }

    var headers: [String: String]? {
        return ["Content-Type": "application/json", "Authorization": "key=YOUR_SERVER_KEY"]
    }
}

위 코드에서 YOUR_SERVER_KEY 부분을 자신의 서버 키로 변경해야 합니다.

5. 푸시 알림 전송

이제 실제로 푸시 알림을 전송하는 코드를 작성해보겠습니다.

provider.request(.sendPushNotification(message: "안녕하세요", token: "푸시 토큰")) { (result) in
    switch result {
    case .success(let response):
        print("푸시 알림 전송 성공")
    case .failure(let error):
        print("푸시 알림 전송 실패: \(error.localizedDescription)")
    }
}

위 코드에서 "안녕하세요"는 보낼 메시지 내용이고, "푸시 토큰"은 대상 장치의 푸시 알림 토큰입니다.

이제 Moya를 사용하여 푸시 알림을 전송하는 방법을 알게 되었습니다. Firebase 설정과 함께 Moya를 활용하면 편리하게 푸시 알림 기능을 구현할 수 있습니다.