티스토리 뷰

개발/iOS

[iOS] FCM 연동

카렐 2017. 9. 8. 16:59



iOS에 FCM 연동하기

저는 iOS를 공부한지 2주되는 캐초보입니다. iOS에서 FCM을 연동하기위해 파이어베이스의 공식 문서를 따라서 진행해보았는데 생각만큼 순탄하지 않았습니다.

관련된 내용을 게재한 여러가지 블로그의 내용을 참고하여 FCM을 연동하는데 성공하였는데 그 과정이 순탄치 않았고 저와같이 처음 FCM을 적용하는데에 어려움을 겪으시는 분들을 위해서 해당 포스팅을 게재합니다.



설정환경

현재 제가 이용하고 있는 환경입니다.

    • Swift version 3.1

    • iOS 10.3


인증서 발급요청서

1. 런치패드에서 "키체인"을 검색해서 키체인을 실행합니다.


2. 키체인이 실행되면 인증서 지원 > 인증 기관에서 인증서 요청... 을 선택합니다.

3. 인증서 정보에서 사용자 이메일 주소에 apple 개발자 계정주소를 입력합니다. 일반 이름에는 원하시는것을 입력하시면됩니다. 디스크에 저장됨을 선택하고 본인이 키 쌍 정보 지정을 체크합니다.


4. 계속을 누릅니다

5. 원하는 저장공간에 인증서를 지정합니다.

6. 계속을 누릅니다.

7. 완료를 누르면 바탕화면에 인증서발급요청서가 만들어졌습니다. 이따 사용할거니 잘 저장해둡시다.



앱 ID 만들기

1. AppleDeveloper Member Center로 이동하여 로그인합니다.

2. Certifcates, Identifiers and Profiles로 이동합니다.

3. 좌측메뉴중 Identifiers에서 App IDs를 선택합니다.

4. 우측상단의 플러스 버튼을 누릅니다.


5. App ID Description에서 Name을 입력합니다.

6. App ID Suffx에서 Explicit App ID 를 선택후에 Bundle ID에 프로젝트 번들아이디를 입력합니다.


7. App Services에서 push Notifications를 체크한 후 Continue버튼을 클릭합니다.


8. Done 을 클릭합니다.

9. Identifiers의 App Ids에서 보면 방금생성한 아이디가 목록에 등록된것을 확인할 수 있습니다.


10. 해당 항목을 선택하면 Push Notifications의 Develpment와 Distribution에 노랑불이 들어온것을 확인할 수 있습니다. Edit버튼을 클릭합니다.

11. Push Notifications에서 Development SSL Certificate와 Production SSL Certificate를 등록해야합니다.

12. Development SSL Certificate의 Create Certifcate버튼을 누릅니다.


13. Continue를 누릅니다

14. Generate youer certificate 화면에서 Upload CSR file의 Choose File...를 선택해서 아까 만들어둔 인증서를 선택합니다.


15. Continue를 누르면 인증서가 정상적으로 발급 됩니다. 중앙의 다운로드 버튼을 눌러서 인증서를 다운받아 실행시켜 주세요.


16. 개발 인증을 받은것처럼 프로덕션도 같은방식으로 인증받습니다. 프로덕션 인증서도 마찬가지로 인증서가 발급되면 다운로드를 받아서 실행해주세요.



Provisioning Profile

1. 아이폰 개발자 설정화면에서 Provisioning Profiles 메뉴에서 All을 선택합니다.


2. 우측상단의 플러스 버튼을 눌릅니다.      


3. iOS App Development 선택               

4. Select App ID에서 방금 생성한 App ID를 선택하고 Continue를 클릭  


5. Select certificates를 선택합니다.   

   


6. 등록할 기기를 선택합니다.

    

   

7. Profile Name을 기입한후 Continue버튼을 누릅니다.

8. 정상적으로 진행이 됐다면 프로파일을 다운로드하여 실행합니다.       



파이어베이스에 프로젝트 등록하기

1. 파이어베이스 콘솔페이지로 이동 해서 프로젝트를 추가합니다.


2. 원하는 이름을 입력하여 프로젝트를 생성합니다.


3. iOS 앱에 Firebase 추가를 클릭


4. 아까 인증서를 만들때 입력한 번들 아이디를 입력합니다.


5. GoogleService-Info.plist를 다운받아서 iOS 프로젝트안에 넣어줍니다.


7. 코코아 포드를 이용하여 파이어베이스의 푸쉬와 관련된 파일들을 다운받을겁니다. 코코아 포드를 설치하지 않으셨다면 아래의 링크에서 설치를 하도록하세요. https://cocoapods.org/ 

8. 그리고 터미널을 실행해서 프로젝트 폴더로 이동합니다.


9. "pod init" 이라고 입력하면 아래와같이 Podfile이 생성됩니다.


10. "open Podfile" 명령어를 입력하여 해당 파일을 실행합니다.


11. 아래와같이 platform 앞의 주석을 제거해주세요 그리고 버전을 10.3으로 바꿉니다.

pod 'Firebase/Core' 와

pod 'Firebase/Messageing' 을 입력해줍니다.


12. 그리고 다시 터미널로 이동하여 pod install 을 명령하여 관련된 라이브러리들을 다운받습니다.


13. 이제 프로젝트 파일을 열면되는데 여기서 주의할점은

기존에 .xcodeproj 확장자명이 아닌

새로만들어진 .xcworkspace 확장자를 실행하셔야 하는겁니다.


14. 그리고 아래와같이 붉은색 라인이 그어진 부분을 주목해주세요

해당 경로대로 이동해서 Build Settings에서 code sign을 입력하여 검색합니다.

Code Signing Identity에 Debug와 Release의 값 두군데를

아까 적용한 등록한 키체인의 값으로 적용해 줍니다.

해당 부분에서 Apple Development IOS Push Services 로 시작하는 Debug 키체인과

Apple Push Services로 시작하는 Release 키체인을 선택해야합니다.

혹시라도 해당 키체인이 목록에 나오지 않는다면 앱 ID 만들기의 create certification을 다시 진행한 후 목록을 확인해보세요.


15. 이제 TARGETS의 프로젝트를 선택한후 Capabilitles에서 Push Notifications의 사용을 ON해줍니다.


16. Background Modes의 상태를 ON으로 변경해줍니다.

17. Remote notifications를 체크해주세요.


18. 아래의 깃허브에 등록되어있는 소스로 이동하여 해당 소스를 복사해주세요.

https://github.com/firebase/quickstart-ios/blob/master/messaging/MessagingExampleSwift/AppDelegate.swift#L40-L55


19. AppDelegate.swift 파일의 소스를 방금 복사한 내용으로 덮어줍니다.


20. 자 이제 앱을 실행해 봅시다

앱을 실행하면 푸쉬알림을 하겠냐는 팝업이 뜹니다.

그래고 Xcode의 콘솔창에 푸쉬 토큰이 발급된것을 확인할 수 있습니다.



파이어베이스 콘솔에서 테스트 메세지 보내기

1. 파이어베이스 콘솔에서 설정 아이콘을 누른후에 클라우드 메시징 탭으로 이동합니다

여기서 화면하단의 APN 인증서란에 개발 APN 인증서와 프로덕션 APN 인증서를 등록해주어야합니다.


2. 업로드 버튼을 누르면 .p12 확장자명의 파일을 등록하라고 합니다.


3. 키체인으로 이동해서 인증서 내보내기를 통해 .p12파일을 얻을 수 있습니다.

인증서 내보내기를 통해 .p12를 얻으려면 해당 인증서가 좌측메뉴 로그인폴더에 카테고리메뉴 내 인증서 폴더에 나와야 하는데요,

제 경우에는 해당 폴더에 나오지 않았습니다.

그래서 아래의 화면과같이 원하는 인증서를 로그인 키체인 폴더로 이동해주었습니다.

저와달리 좌측 로그인 키체인에 카테고리 내 인증서폴더에 해당 인증서가 이미 존재한다면 아래와같은 처리를 하지 않아도 됩니다.


4. 좌측 키체인 메뉴의 로그인 폴더와 카테고리란의 내 인증서 폴더를 선택하여 개발 인증서를 우클릭합니다.

그리고 보내기를 선택합니다.


5. 다음 팝업에서 내보낼 인증서의 확장자명은 .p12 로 선택한 후 비밀번호를 입력하여 내보내기 합니다.

6. 이 과정을 프로덕션 인증서도 반복합니다.


7. 이제 다시 파이어베이스 콘솔화면에서 내보낸 인증서를 등록해줍니다.


8. 콘솔화면에서 좌측 메뉴의 Notifications 로 이동해 "첫번째 메세지 보내기" 버튼을 클릭하세요

9. 해당화면에 메시지 내용을 입력하고 아까 발급받은 FCM 등록 토큰란에 토큰을 기입한 후 메시지 보내기 버튼을 클릭합니다.


10. 메세지를 보내면 아래와같이 백그라운드 상태에서 푸쉬가 오는것을 확인할 수 있습니다. 해당 포스팅에서는 포그라운드 상태에서 푸쉬처리 하는방법은 다루지 않겠습니다.



서버에서 푸쉬 보내기

아래는 이클립스에서 푸쉬를 보내는 샘플입니다.

관련된 샘플 코드는 https://github.com/karrel84/FcmTesterForIOS 에서 확인하실 수 있습니다.



FCM을 iOS에 적용하는데에도 많은 시간을 들였었는데 포스팅을 작성하는데에도 많은시간이 들어가네요.

저와같이 FCM을 iOS에 적용하는데에 어려움을 겪으시는분들에게 도움이 되길 바랍니다.

진행하시면서 잘 되지않으시는 부분이나 어려운 부분에 대해서 문의해주시면 답변드리도록 하겠습니다.


공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크