본문 바로가기
IOS

IOS 파이어베이스 Push 메세지 셋팅 ( FCM )

by 일용직 코딩노동자 2020. 5. 19.
728x90
반응형

IOS 파이어베이스로 FCM푸시 메세지 셋팅하는 방법을 알아볼게요.

 

우선 코코아팟이 셋팅이 되어있어야 하기때문에 게시글을 참고해주세요.

 

https://onedaycodeing.tistory.com/88

 

cocoapods(코코아) 설치 및 라이브러리 추가 및 설치가 끝난 후에 추가/ SnapKit

IOS에서 외부 라이브러리를 사용할때 쓰이는 cocoapods를 사용해보도록 할게요. 터미널을 열어서 sudo gem install cocoapods 를 입력하여 cocoapods를 설치해줍니다. 패스워드를 입력하라고 나온다면 맥 로��

onedaycodeing.tistory.com

 

우선 애플 개발자 사이트에 접속해줍니다.

 

https://developer.apple.com/

 

Apple Developer

Software Downloads Get the latest releases of Xcode, macOS, iOS, watchOS, tvOS, and more. Download resources

developer.apple.com

Account(계정) 으로 접속해주세요.

 

이곳을 클릭해주시면 됩니다. 크롬으로 자동 번역이 되신분들은

 

이런 글이 있을겁니다.

 

왼쪽 카테고리에서 Keys(열쇠) 를 클릭해주세요.

 

그러면 오른쪽 화면에

 

해당 그림처럼 +버튼이 보입니다.

 

클릭해주세요.

 

Key Name를 작성해주시고 / Apple Push Notifications service(APNs) 를 클릭해주세요.

 

그리고 오른쪽에 보시면

 

컨티뉴 버튼을 클릭해주세요. 사진은 흑백이지만 완성된다면 활성화됩니다.

 

Key ID가 있는데 따로 적어두세요.! 

 

그리고 이 화면에서 오른쪽에 다운로드 버튼을 눌러 p8파일을 무조건 다운로드 해주셔야합니다. !! 필수 중요도 별 다섯개

 

다시 왼쪽 탭을 보셔야합니다.

 

Identifiers를 클릭해주세요.

 

그럼 오른쪽에

 

+버튼을 클릭해주세요.

 

그대로 체크가 된 상태로 컨티뉴 해줍니다.

 

이러한 화면이 나오는데요. 

 

왼쪽에는 구분할 그냥 이름을 지으시고 오른쪽에는 번들아이디를 적어주시면됩니다. (안드로이드로 치면 패키지명)

 

그리고 바로 아래 내려보시면 여러 체크항목이 있는데

 

그중에서 

 

이 Push Notifications을 체크해주시고 컨티뉴 해줍니다.

 

추가한 항목을 들어가서 보시면

 

이렇게 있습니다.

 

오른쪽에 팀 ID를 따로 적어주세요.

 

다음은 이제 파이어베이스 콘솔에 들어가서 셋팅을 해줄때입니다.

 

우선 파이어베이스 기본 연동이 필요합니다.

 

https://onedaycodeing.tistory.com/91

 

IOS 파이어베이스 첫 연동하기.

우선 코코아팟이 되어있어야 합니다. https://onedaycodeing.tistory.com/88 cocoapods(코코아) 설치 및 라이브러리 추가 및 설치가 끝난 후에 추가/ SnapKit IOS에서 외부 라이브러리를 사용할때 쓰이는 cocoapod..

onedaycodeing.tistory.com

 

해당 게시글을 참고해주세요.

 

파이어베이스 콘솔에서

 

프로젝트 설정을 들어가주세요.

 

그리고 클라우드 메시징을 클릭해주세요.

 

그럼 아래쪽에 이렇게 동그라미 쳐놓은 업로드 버튼을 눌러주세요.

자 여기서 아까 다운받은 .p8파일을 업로드 해주셔야합니다.

 

그리고 제가 아까 따로 적어두라고 했던 키ID와 팀ID를 적어주시면 됩니다.

 

이제 거의 다 끝나갑니다 (지루하시겠지만 더 따라와주세요 애플이 많이 복잡합니다 ㅠㅠ)

 

이제 Xcode로 복귀해주세요.

 

해당 푸시를 설정할 프로젝트를 열어주시고

 

타겟으로 가주세요.

 

이와같은 화면이 있는데요.

 

백그라운드 모드에서 해당부분을 체크해주시고, 왼쪽 위에 +버튼을 누르셔서

Push Notifications를 추가해주세요.

 

+ 버튼 누른 후 Push만 쳐도 바로 나올겁니다.

 

코드 삽입에 앞서 pod추가 해줄게요.

 

Podfile을 텍스트편집기로 열으셔서

 

# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'

def all_pods
  pod 'SnapKit'
  pod 'Firebase/Analytics'
  pod 'Firebase/Messaging'
end

target 'userdeliver_' do
	use_frameworks!
  	pod 'SnapKit'
	pod 'Firebase/Analytics'
	pod 'Firebase/Messaging'
end

 

 저는 이와 같이 적어주었습니다. 

 

pod 'Firebase/Analytics' 는 처음에 파이어베이스 연동시 넣어주었던 코드구요.

 

메세지 수신을 위해 pod 'Firebase/Messaging' 도 추가했습니다.

 

그리고 터미널에서 처음에 하신것처럼 pod install해줍니다. 물론 그전에 경로 진입은 cd명령어로 해주셔야합니다.

 

이제 코드를 추가해볼게요.

 

AppDelegate로 가주세요.

 

그리고 import Firebase 해주세요.

 

그리고 import UserNotifications 이녀석도 같이 임포트 해줄게요.

func application(_ application: UIApplication,didFinishLaunchingWithOptions launchOptions:[UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        FirebaseApp.configure()
        
        UNUserNotificationCenter.current().delegate = self 
        Messaging.messaging().delegate = self
        
        let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
        UNUserNotificationCenter
          .current()
          .requestAuthorization(
            options: authOptions,completionHandler: { (_, _) in }
          )
        application.registerForRemoteNotifications()    /
        return true
    }

해당 코드를 넣어주세요 푸쉬 권한 및 파이어베이스 기타 셋팅입니다.

 

extension AppDelegate : MessagingDelegate {
    func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String) {
        print("파이어베이스 토큰: \(fcmToken)")
    }
    func messaging(_ messaging: Messaging, didReceive remoteMessage: MessagingRemoteMessage) {
        print("Received data message: \(remoteMessage.appData)")
    }
}

그리고 파이어베이스 메세지 전송의 토큰을 받을 수 있는 MessgingDelegate를 extension으로 분리해줍니다.

 

파이어베이스 토큰값은 하나의 기기에 특정 상대에게만 보낼 수 있는 그 기기의 고유한 값입니다.

 

extension AppDelegate : UNUserNotificationCenterDelegate {
    func userNotificationCenter(_ center: UNUserNotificationCenter,willPresent notification: UNNotification,withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
        completionHandler([.alert, .badge, .sound])
    }

    func userNotificationCenter(_ center: UNUserNotificationCenter,didReceive response: UNNotificationResponse,withCompletionHandler completionHandler: @escaping () -> Void) {
        completionHandler()
    }
}

또 이 코드를 추가해주시면 여기서 파이어베이스의 노티가 수신됩니다.

 

백그라운드 및 포그라운드에서 알림메세지가 작동하는지 확인 해 볼게요.

 

파이어베이스 콘솔에서 프로젝트 클릭 후 왼쪽에 포시면 Could Messaging가 있습니다.

 

클릭해서 들어가주세요.

 

새 알림을 클릭해서 들어가 주시면

 

이러한 화면에서 오른쪽에 보시면 테스트 메시지 전송 이라고 있습니다. (다음 누르시면 안됩니다.)

 

물론 다음 다음 다음 계속 눌러서 테스트를 진행하시면,

특정기기에 전송이 아닌 앱이 설치되어있는 모든 사용자에게 푸시 메시지가 전송됩니다. 

 

FCM등록 토큰 추가를 클릭 후 아까 추가하신 코드를 실행하셨다면 Xcode아래 로그창에 토큰값이 불라불라 찍혔을겁니다.

 

엄청 이상하게 찍혀있습니다.

예시로 이런식으로 찍힙니다.

 

이거 복사해서 저기에 붙여넣기 해주세요.

 

그리고 오른쪽에 +버튼 눌러주시면 아래 추가가됩니다.

 

이렇게 추가된 토큰을 체크하시고 테스트 버튼을 누르시면 해당 토큰값을 가진 기기에게만 전송됩니다.

 

단 주의하실 것은 앱이 지웠다가 깔았는 경우는 토큰값이 바뀌니 재등록이 필요하니 주의하세요.

 

이렇게 IOS파이어베이스 푸시 (FCM)에 대해서 알아봤습니다.

 

많이 부족하지만 다음에는 넘어오는 데이터를 파싱해보는것도 해볼게요.

 

ㄱ ㅏ   ㄱ  푸시

ㅗ o    ㅗ  푸시 :D

728x90
반응형

댓글