[개발환경] 깃허브 PR을 이용한 코드리뷰 환경 구성(4)

2019.06.20 11:31

이전 글에서는 깃허브에 여러분의 저장소를 만들고 연동하는 내용을 살펴봤습니다.

 

이 글에서는마스터 저장소와 개발용 저장소를 나누고, 깃허브 Pull Request을 이용 코드리뷰 환경을 구성합니다.

이 글에서 다음 내용을 설명합니다.

  1. 코드리뷰를 위한 깃허브 저장소 구성 전략
  2. Fork로 개발용 저장소 복사하기
  3. 변경내역 적용 요청(PR) 및 코드리뷰

 

이 시리즈에서는 깃과 깃허브를 이용하는 기본적인 방법과 깃허브를 이용한 코드리뷰 방법을 설명합니다.

 

코드리뷰를 위한 깃허브 저장소 구성 전략

Pull Request 활용

깃허브에서 코드리뷰는 깃허브의 Pull Request(이하 PR) 기능을 이용합니다.

PR은 원격 저장소간 변경된 내역을 적용(당겨가길) 요청하는 기능입니다.

 

다음 그림은 데브기어 교유과정에서 발생한 PR 예시입니다.

PR 작성 시 작업내용에 대한 코멘트와 여러건의 커밋을 포함합니다.

 

PR의 하단에는 PR에 대한 전반적은 의견을 남길 수 있습니다.

공동작업자(관리자)의 경우 적용요청(PR)을 병합(Merge)하거나 종료(Close)할 수 있습니다.

또한, 커밋 로그에서는 소스코드 줄 단위로 의견을 남기는 것도 가능합니다.

 

Fork - 원격저장소 복사

PR을 활용하려면 원격 저장소가 분리되어 있어야 합니다. 원격 저장소를 분리는 Fork 기능을 이용합니다.

원격 저장소를 분리하면 다음의 잇점이 생깁니다.

  • 마스터(출시용: Release) 저장소와 개발용 저장소가 분리되 관리자와 개발자 작업 공간 분리
  • 여러 개발자(또는 개발팀) 별로 저장소 사용 가능
  • 각 개발자가 작업한 결과물을 관리자 및 팀원들이 검토 후 마스터 저장소에 적용(또는 중단)

 

위 구성을 활용해 다양한 저장소 구성 전략을 새울 수 있습니다.

 

소규모 개발팀에서는 팀장과 운영팀에서 마스터 저장소를 관리합니다. 개발자들은 개인 개발용 저장소에서 작업합니다.

개발작업 완료 후 개발용 저장소에 작업한 내용을 마스터 저장소에 반영요청(PR)합니다. 팀장과 다른 팀원은 PR에 대한 코드리뷰 후 적용 여부를 판단합니다.

 

Fork로 개발용 저장소 복사하기

마스터 저장소를 Fork해 개발용 저장소를 생성하고, 개발용 저장소를 이용하는 방법을 실습합니다.

 

마스터 저장소 다음 링크의 데브기어의 교육용 저장소로 실습을 진행합니다.

 

위 링크 방문 후 상단 우측의 [Fork]를 클릭합니다.

 

잠시후 여러분의 계정에 SetupText 저장소가 생성될 것입니다.

이제 마스터 저장소는 devgeredu/SetupTest로 개발용 저장소는 (여러분 아이디)/SetupTest로 진행합니다.

 

 

이제 앞으로 여러분들은 개발용 저장소에서 작업을 진행해야 합니다.

 

이전 글에서 여러분들이 만든 저장소를 RAD 스튜디오로 불러오고 Commit 및 Push 했던 작업을 개발용 저장소를 대상으로 진행합니다.

 

간단한 과정은

  1. 저장소 URL 복사
  2. RAD 스튜디오에서 File > Open From Version Control...
  3. Git 선택 > 저장소 주소와 저장 경로 지정 후 프로젝트 열기
  4. 프로젝트 소스코드 수정(에디트 컴포넌트 추가)
  5. Project 팬에서 프로젝트 팝업 메뉴 Git > Commit > From Repository Root
  6. 커밋 메시지 입력(Edit 추가) 및 Commit 버튼 클릭
  7. Project 팬에서 프로젝트 팝업 메뉴 Git > Push > From Repository Root
  8. 깃허브 계정으로 로그인
  9. 깃허브 페이지에서 변경내역 확인

 

변경내역 적용 요청(PR) 및 코드리뷰

개발용 저장소에서 개발이 완료(여러차례의 Commit과 Push)되면, 그 내용을 마스터 저장소에 적용해야 합니다.

여러분들은 마스터 저장소에 대한 쓰기 권한이 없기 때문에 마스터 저장소의 작업자에게 내가 작성한 코드를 적용하길 요청하는 Pull Request를 작성해야 합니다.

 

개발용 저장소 페이지의 상단에 Pull requests 탭을 선택합니다.

그리고, [New pull request] 버튼을 클릭합니다.

 

페이지가 이동되면 마스터 저장소로 이동되고, PR을 생성할 수 있습니다.

먼저 두개의 브랜치를 대상을 확인합니다. 커밋 로그를 확인합니다. 하단에 변경된 파일 정보를 확인할 수 있습니다.

확인 후 [Create pull request] 버튼을 클릭해 PR을 생성합니다.

PR의 제목과 내용 입력 후 [Create pull request] 버튼을 클릭합니다.

 

다음과 같이 PR이 등록되었습니다. 

PR 상세화면에서는 추가 코멘트를 달거나, 본인이 작성한 PR을 닫을 수 있습니다.

 

Pull Requests 탭을 다시 선택하면 PR 목록이 표시됩니다.

이 목록은 마스터 저장소 관리자 뿐아니라 누구에게나 공개됩니다.

 

마스터 저장소 관리자의 PR 상세 페이지에는 PR에 대한 정보와 함께, 변경사항을 병합(Merge)가능합니다.

관리자는 다른 코드리뷰어의 PR에 대한 코멘트와 소스코드에 대한 코멘트를 참고해서 병합 여부를 판단할 수 있습니다.

 

PR의 변경사항 병합을 결정했다면, [Merge pull request] 버튼을 클릭해 병합하면, 해당 PR의 상태가 Open에서 Merged로 변경되어 닫힙니다.

소스코드를 확인해보면 PR에서 변경된 "Edit 추가" 커밋 메시지가 표시됨을 확인할 수 있습니다.

 

정리

깃 설치부터 RAD 스튜디오의 깃 설정, 생성한 저자소와 연동 및 코드리뷰를 위한 저장소 방안까지 다음 시리즈를 통해 살펴봤습니다.

 

 

 

 

사실 이 글은 가장 기본적인 내용으로만 구성했습니다. 깃과 깃허브에는 더 다양한 기능들이 있습니다.

여러분들의 조직과 환경에 맞춰 그 기능을 추가 학습해 개발조직에 가장 중요한 소스코드를 효과적으로 관리 운영하시기 바랍니다.

 

험프리.김현수 Delphi/C++Builder fork, git, github, PR, pull request, RAD스튜디오, , 깃허브, 저장소구성, 코드리뷰

[개발환경] 깃허브에 저장소 생성 및 연동하기(3)

2019.06.19 17:37

이전 글에서 RAD 스튜디오에서 Git 설정 및 불러오기를 진행했습니다.

 

이 글에서는 깃허브에 여러분의 저장소를 생성하고, RAD 스튜디오로 열고, 변경사항을 저장소에 반영하는 내용을 진행합니다.

이 글에서는 다음 내용을 설명합니다.

  1. 깃허브에 저장소 생성
  2. RAD 스튜디오에서 생성한 저장소 열기
  3. 소스코드 변경 후 커밋 및 저장소에 반영

 

이 시리즈에서는 깃과 깃허브를 이용하는 기본적인 방법과 깃허브를 이용한 코드리뷰 방법을 설명합니다.

 

깃허브에 저장소 생성

깃허브에 여러분의 저장소를 생성하는 내용을 설명합니다.

 

깃허브에서 새로운 저장소를 생성합니다.

저장소 이름을 입력하고, .gitignore를 선택합니다.(.gitignore는 버전관리 제외 대상 포맷 파일입니다.)

[Create repository] 버튼을 눌러 저장소를 생성합니다.

생성된 저장소에서 [Clone or download] 버튼을 누르고, 클립보드로 복사 버튼을 클릭합니다.

 

RAD 스튜디오에서 생성한 저장소 열기

RAD 스튜디오를 열고, File > Open From Version Controll... 메뉴를 선택합니다.

Git 선택 후 [OK] 버튼을 클릭합니다.

Source 항목은 깃 허브에서 클립보드로 복사한 주소를 붙여넣기(Ctrl + V) 후 Destination 항목에 저장할 로컬 경로 선택 후 [OK] 버튼을 클릭합니다.

 

소스코드 변경 후 커밋 및 저장소 반영

위에서 불러온 저장소에 프로젝트 파일을 만들고 커밋하는 절차를 설명합니다.

 

프로젝트 생성 및 저장

위의 로컬 경로에 프로젝트 파일을 저장합니다.

File > New > WIndows VCL Application

File > Savle All

 

이제 프로젝트 팬에서 프로젝트 팝업 메뉴 중 Git 메뉴가 표시됩니다.
(프로젝트 파일의 디렉토리에 깃 정보가 있으면 Git 메뉴 표시)

 

Commit - 로컬 저장소에 소스코드 반영

Git > Commit > From Repository Root 메뉴를 선택합니다.

Commit 화면에서 [Show unversioned files] 체크박스를 선택합니다.

파일 중 커밋할 대상을 선택합니다.(Check or uncheck all 선택)

커밋 메시지(Comment)를 입력 합니다.

[Commit] 버튼을 클릭합니다.

Push - 원격 저장소에 로컬저장소의 내용 반영

Git > Push > From Repository Root 메뉴를 선택합니다.

Git Login 창에서 깃허브의 계정으로 로그인합니다.

원격 저장소 확인

깃허브에서 여러분의 저장소에 반영된 목록을 확인합니다.

이후 작업

소스코드를 수정하고, 커밋(Commit)을 합니다. 커밋된 변경내역을 원격저장소에 반영이 필요한 경우 푸시(Push)합니다.

 

커밋 작업은 자주하는 것이 좋지만, 의미있는 단위(작은 기능 추가, 함수 추가, 코드 변경 등)로 커밋하는 것이 좋습니다.

향후 커밋된 작업으로 소스코드를 되돌려야 할 수 있습니다.

 

참고자료

다음 링크에서 협업을 위한 깃허브 구성과 코드리뷰 환경 구성하는 내용을 확인할 수 있습니다.

험프리.김현수 Delphi/C++Builder commit, git, github, , 깃허브

[개발환경] RAD 스튜디오에서 Git 설정 및 불러오기(2)

2019.06.19 16:21

이전 글에서 깃을 설치하고, 저장소의 구성을 살펴봤습니다.

 

이 글에서는 RAD 스튜디오에서 깃을 설정하고 깃허브 소스코드를 RAD 스튜디오에서 여는 방법을 설명합니다.

 

이 글에서는 다음 내용을 설명합니다.

  1. RAD 스튜디오에서 깃 설정
  2. RAD 스튜디오에서 깃허브 저장소의 소스코드 열기
  3. 써드파티 깃 클라이언트 소개

 

이 시리즈에서는 깃과 깃허브를 이용하는 기본적인 방법과 깃허브를 이용한 코드리뷰 방법을 설명합니다.

 

RAD 스튜디오에서 깃 설정

RAD 스튜디오(델파이, C++빌더) 10.3 기준으로 설명합니다. 다른 버전의 경우 옵션 등의 경로가 다를 수 있습니다.

 

툴 옵션(Tools > Options...) 표시 후 Version Control > Git 화면을 표시합니다.

 - Git Executable : 깃 설치 프로그램을 설치한 경로 하위의 bin\git.exe 파일을 선택합니다.

 - Authorization(User Name, Email) : 소스코드 저장 시 적용할 이름과 이메일을 기록합니다.

 

깃허브의 소스코드 열기

깃허브에 저장된 소스코드를 RAD 스튜디오로 여는 과정을 설명합니다.

 

다음 링크는 데브기어 교육용 저장소입니다. 이 저장소의 소스코드를 통해 설명합니다.

(여러분들은 이 저장소의 쓰기권한이 없으므로, 소스코드를 가져올 수 있지만 저장할 수는 없습니다.

가져온 소스를 저장하려면 저장소를 생성하거나 복사(Fork)한 저장소여야 합니다.)

 

다음 링크를 방문합니다.

페이지 중간 우측의 [Clone or download] 버튼 클릭 후 클립보드로 복사 버튼을 클릭합니다.

 

RAD 스튜디오를 열고, File > Open From Version Control... 메뉴를 선택합니다.

Git 선택 후 [OK] 버튼을 클릭합니다.

Source 항목은 깃 허브에서 클립보드로 복사한 주소를 붙여넣기(Ctrl + V) 후 Destination 항목에 저장할 로컬 경로 선택 후 [OK] 버튼을 클릭합니다.

로컬로 복사(Clone)가 완료되면 [OK] 버튼 클릭. 지정된 경로에 소스코드가 복사되었습니다.

 

RAD 스튜디오에 프로젝트를 열수 있는 화면이 표시되면, 프로젝트를 선택 후 [OK] 버튼을 클릭해 프로젝트를 엽니다.

 

이후, 프로젝트 패널에서 프로젝트 팝업 메뉴 중 Git 메뉴를 통해 "Commit, Pull, Push" 등의 작업이 가능합니다.

 

다음 글에서는 위 기능을 이용해 변경(추가/수정/삭제)된 소스코드를 저장소에 반영하는 기능등을 살펴봅니다.

 

써드파티 깃 클라이언트로 소개

RAD 스튜디오의 깃 연동은 가장 중요한 기능(Commit, Pull, Push, Clean, Show Log) 위주로 제공합니다.

깃에는 위 기능 외에 매우 많은 기능(Branch, Merge, Tag 등)을 명령어로 제공합니다. 

 

이 기능들을 UI기반으로 사용할 수 있는 써드파티 깃 클라이언트를 이용할 수 있습니다.

많은 써드파티 깃 클라이언트가 있지만, 이 글에서는 SourceTree와 TortoiseGit을 소개합니다.

 

SourceTree

SourceTree는 저장소의 내용을 시각적으로 표현하고 관리할 수 있는 깃 GUI입니다.

현재 가장 인기있는 깃 클라이언트 중 하나입니다.

TortoiseGit

탐색기 기반으로 동작하는 깃 클라이언트입니다.

개인적으로 예전부터 사용하던 TortoiseSVN이 익숙해 사용하고 있습니다.

참고자료

다음 링크에서 깃허브에 저장소를 생성하고 연동(불러오기, 저장히기)하는 내용을 확인할 수 있습니다.

 

참고링크

 

험프리.김현수 Delphi/C++Builder git, github, RAD스튜디오, , 깃허브

[개발환경] Git 설치와 저장소 구성(1)

2019.06.18 17:59

깃(Git)은 컴퓨터 파일의 변경사항을 추적하고 여러명의 사용자들 간에 해당 파일들의 작업을 조율하기 위한 분산 버전 관리 시스템이다. - 위키백과

깃허브(Github)는 분산 버전관리 툴인 깃을 사용하는 프로젝트를 지원하는 웹호스팅 서비스입니다. - 위키백과

 

버전관리 시스템은 소스코드의 중요한 변화를 기록하는 작업으로 개인 및 팀 작업에 반드시 필요한 요소입니다.

깃허브는 주로 오픈소스등 공개된 저장소로 사용되지만, 개인용 저장소를 생성해 비공개 저장소로 이용가능합니다.

 

이 시리즈에서는 깃과 깃허브를 이용하는 기본적인 방법과 깃허브를 이용한 코드리뷰 방법을 설명합니다.

 

이 글에서는 다음 내용을 설명합니다.

  1. 깃 설치하기
  2. 깃 저장소와 소스코드의 구성
  3. 기타 - 깃의 기능(명령어) 소개

깃 설치

깃의 명령어를 사용하기 위해 깃 설치 프로그램을 설치합니다.

(깃허브 계정이 없다면)앞으로 깃허브에서의 실습을 위해 깃허브 계정을 생성합니다.

깃 저장소와 소스코드의 구성

기본 구성

깃 저장소는 위 그림과 같이 원격(Remote-Github) 저장소와 로컬(Local) 저장소로 분산되어 운용됩니다.

 

깃 허브에서 저장소를 생성 후, 로컬에서 Clone 명령을 통해 로컬로 소스코드를 복사합니다.

이후 변경된 내용은 Pull 명령을 통해 로컬에 반영합니다.

로컬의 소스코드를 편집 후 로컬 저장소에 Commit해 반영합니다.

로컬 저장소의 변경된 내역은 Push 명령을 통해 원격 저장소에 반영합니다.

 

마스터, 개발용 저장소 구성

위 그림과 같이 마스터 저장소(Master Rep.)와 개발용 저장소(Dev. Rep.)를 분리해 운영할 수 있습니다.

 

마스터 저장소를 Fork해 개발용 저장소로 복사해 병행 운용합니다.

마스터 저장소는 관리자가 운용, 개발용 저장소는 개발자가 운용합니다.

개발자는 개발용 저장소에서 소스코드를 Clone해 개발을 진행합니다.

개발용 저장소의 변경된 내역은 Pull Request로 마스터 저장소에 적용을 요청합니다.

관리자는 요청(Pull Request)을 확인 후 마스터 저장소에 적용합니다.

 

Fork는 깃 허브에서 제공하는 기능입니다. 또한 깃 허브에서는 Pull Request에시 커멘트를 추가, 답변할 수 있는 기능을 제공합니다. 이 기능을 이용해 코드리뷰 가능합니다.

 

기타 - 깃의 기능(명령어) 소개

깃은 명령줄 도구로 명령어를 통해 제어할 수 있습니다. 개발 도구나 써드파티 깃 클라이언트는 이 명령어 기반으로 UI를 제공합니다.

 

이 시리즈에서 사용하는 기능 들

  • Commit - 소스코드(및 기타 파일)의 변경(추가,수정,삭제) 내역을 로컬 저장소에 적용
  • Clone - 원격 저장소의 파일을 로컬로 복사해 로컬 저장소 생성
  • Pull - 원격 저장소의 변경된 내역을 로컬 저장소에 반영
  • Push - 로컬 저장소의 변경된 내역을 원격 저장소에 반영
  • Fork - 타인의 원격 저장소를 내 소유의 원격 저장소로 복사
  • Pull Request - Fork한 저장소의 변경내역을 소유자의 저장소에 적용을 요청

기타 자주사용하는 기능 들

  • Branch - 소스코드를 독립적으로 작업 진행하기 위한 분계(가지치기)
  • Checkout - Branch한 소스코드로 전환
  • Merge - Branch한 소스코드를 병합
  • Tag - 특정 시점에 알기 쉬운 이름을 부여(보통 릴리즈 시 사용. v1.0 등)

기타 다른 명령어 및 기능은 깃의 참고문서를 참고하시기 바랍니다.

 

참고 자료

다음 링크에서 RAD 스튜디오에서 Git 설정 및 불러오기 내용을 확인할 수 있습니다.

 

깃에 대해 추가 학습을 원한다면 다음 링크를 참고하시기 바랍니다.

 

험프리.김현수 Delphi/C++Builder git, github, SCM, , 깃허브

[FMX] RAD 스튜디오 10.3.1에서 FCM 전송 설정하기

2019.06.10 14:13

이 글은 Marco Cantu가 작성한 Firebase Android Push Notification Support with RAD Studio 10.3.1의 의역입니다.

 

구글은 다음과 같이 발표했습니다.  "GCM 서버와 클라이언트 API는 지원중단하며, 2019년 5월 29일에 삭제될 예정입니다. 안정적이고 확장가능한 GCM 인프라 및 많은 새로운 기능을 계승한 Firebase Cloud Messaging(FCM)으로 GCM 애플리케이션을 전환하십시오."

 

앞으로 파이어몽키 안드로이드 앱에서 푸시 알림 지원을 사용하려면, 구글의 Firebase를 사용해야 합니다. 이 글에서는 Delphi, C++Builder 및 RAD 스튜디오 10.3.1을 사용해 파이어몽키 안드로이드 앱에서 Firebase 푸시 알림 지원하는 과정을 소개합니다.

 

사전준비 - 안드로이드 푸시 알림 패치

시작에 앞서 IDE의 겟잇 패키지 매니저(Tools > Getit Package Manager...)에서 "Android Push Notification Patch 1.0"을 찾아 설치 버튼을 클릭 해 다운로드 합니다.("Android"로 검색)

 

최신 로드맵에서 소개했듯이 향후 10.3.2 릴리즈에서 이 지원을 더욱 간소화(RAD 서버의 Android Firebase 푸시 알림 지원 추가) 및 10.4의 Firebase 및 기타 관련 서비스의 전체 통합 지원 제공을 계획하고 있습니다.

 

Firebase에서 애플리케이션을 활성화하려면, 다음 3단계로 작업을 진행해야 합니다.

 

1, Firebase 프로젝트를 만들고 파이어몽키 프로젝트를 Google Firebase 콘솔에 등록

2, 파이어몽키 프로젝트를 새로 만들거나 기존의 프로젝트에 RAD 스튜디오 10.3.1 푸시 알림 구성

3, GCM(Google Cloud Messaging)  대신 Firebase를 지원하도록 파이어몽키 프로젝트 변경

 

Firebase 프로젝트 생성 및 Firebase 콘솔에 파이어몽키 프로젝트 등록

1, Google Firebase 콘솔(https://console.firebase.google.com/)에 접속 후 [새 프로젝트]를 클릭 합니다.

2, 필요한 사항을 설정하고 [프로젝트 만들기] 버튼을 클릭합니다.

 - 프로젝트 이름은 임의로 설정(예> FirebaseApp)

 - Cloud Firestore 위치는 현재(2019.05) 가장 가까운 asia-northeast1 추천

3, 프로젝트 생성 후 Project Overview 옆의 톱니바퀴 아이콘 클릭 후 [프로젝트 설정] 메뉴를 선택해 프로젝트 설정 화면으로 이동합니다.

4, 안드로이드 아이콘을 클릭하여 "Android 앱에 Firebase 추가 화면"으로 이동합니다.

 

5, 앱 등록 단계에서 Android 패키지 이름을 지정 후 [앱 등록] 버튼을 클릭합니다.

 - 파이어몽키 앱의 기본 패키지 이름은 com.embarcadero.프로젝트이름 입니다.

 - 파이어몽키 프로젝트를 FirebaseApp으로 생성 시 com.embarcadero.FirebaseApp으로 생성합니다.

 - 프로젝트 옵션(Application > Version Info의 package 항목)에서 패키지 이름 설정 가능합니다.

6, 구성 파일(google-services.json)을 다운로드 합니다. 

다운로드 후 [다음] 버튼 클릭 후 이후 단계는 건너 뛰기를 선택합니다.

 

7, 안드로이드 문자열 리소스 파일(strings.xml)을 편집합니다.

 - strings.xml 파일은 겟잇 패키지 매니저에서 다운로드한 파일에 포함되어 있습니다.
    (C:\Users\Public\Documents\Embarcadero\Studio\20.0\CatalogRepository\AndroidPushNotificationsPatch-1.0\FireBase)

 - strings.xml 파일을 파이어몽키 프로젝트 경로에 복사합니다.(예> C:\MyFirebaseApplication 등)

 - 복사한 strings.xml 파일을 텍스트 에디터 등으로 열어 다음을 수정합니다.

  * google_app_id와 gcm_defaultSenderId, fcm_fallback_notification_channel_label 항목만 두고 나머지 string 태그 삭제

  * google_app_id = mobilesdk_app_id

  * gcm_defaultSenderId = project_number
    (6단계에서 다운로드 받은 google-services.json 파일을 참조)

 

파이어몽키 프로젝트에 푸시 알림 구성

8, 파이어몽키 프로젝트를 생성(또는 기존 프로젝트 오픈) 합니다.

 

9, Firebase 콘솔에 등록된 프로젝트 이름과 일치하도록 FMX 프로젝트 이름을 변경합니다.

    (이 예제에서는 FirebaseApp으로 설정합니다.)

7단계에서 업데이트 한 strings.xml 파일과 동일한 경로에 프로젝트를 저장합니다.(예> C:\MyFirebaseApplication)

저장 후 안드로이드 플랫폼 선택 후 빌드를 실행해 해당 경로에 AndroidManifest.template.xml을 생성합니다. 이 파일은 마지막 단계에서 편집합니다.

 

10, Firebase 이벤트 로그를 표시하기 위해 TMemo 컴포넌트를 폼에 추가하고, MemoLog로 이름을 변경합니다.

다음 Form의 OnCreate 이벤트를 추가해 푸시 알림 서비스 초기화 및 연결을 위한 코드를 구현합니다.

 

이 코드는 겟잇 패키지 매니저에 포함되어 있는 Snippets.txt 파일을 참조하기 바랍니다.

Snippets.txt 파일에는 푸시 알림 서비스로 연결을 만드는 프로세스와 이벤트에 대한 코드가 포함되어 있습니다.

 

푸시 알림 서비스와 연결을 위한 코드를 OnCreate 이벤트에 복사합니다.

Snippets.txt의 1~2줄을 implimentation 아래에 추가합니다.

또한, interface uses 절에 System.PushNotification을 추가합니다.

이 서비스로 Firebase와 연결 후 장치아이디와 장치 토큰을 수신하게 됩니다. 필요한 변수와 이벤트를 private 영역에 선언합니다.

두개의 변수는 장치 아이디와 장치 토큰을 수신하는데 사용합니다.

OnServiceConnectionChange 이벤트는 연결 변경 시 장치 토큰을 얻는데 사용합니다.

OnReceiveNotificationEvent 이벤트는 푸시를 받기 위해 사용됩니다.

 

Snippets.txt를 참고해 2개의 이벤트를 구현합니다.

GCM 대신 FCM을 지원하도록 프로젝트 변경

11, IDE 오른쪽의 프로젝트 에서 Android > Libraries를 확장하고, 다음의 라이브러리를 각각 마우스 오른쪽 버튼을 이용해 수동으로 해제합니다.

  • cloud-messaging.dex.jar
  • google-analytics-v2.dex.jar
  • google-play로 시작하는 모든 Google Play 라이브러리

 

12, 프로젝트의 Libraries에 마우스 오른쪽 버튼을 누르고, [Add] 메뉴를 선택 해 Firebase 라이브러리들과 업데이트된 Google Play Services 라이브러리를 추가합니다.

(이 라이브러리 파일들은 겟잇 패키지 매니저에서 다운로드받은 파일들 중 jars 디렉토리에 있습니다.)

 

13, 다음 Firebase 지원을 위한 AndroidAPI.JNI.Firebase.pas와 업데이트된 FMX.PushNotification.Android.pas 파일을 프로젝트 경로에 복사 후 추가합니다.

(이 파일들은 겟잇 패키지 매니저에서 다운로드 받은 파일 중에 있습니다.)

 

14, IDE 메인 메뉴 중 Project > Deployment로 배포화면을 표시 후 프로젝트 경로의 strings.xml 파일을 추가합니다.

 

또한 strings.xml 파일의 Remote Path를 "res\Values\"로 업데이트 후 변경사항을 저장합니다.

 

15, 마지막 단계로 AndroidManifest.template.xml 파일을 변경합니다.(9단계에서 안드로이드 타겟인 프로젝트를 빌드해 생성)

 

Snippets.txt 파일 하단의 XML 구문을 복사해 <%receivers%>아래(</application> 태그 바로위)에 붙여넣기 합니다.

Firebase Clound Messaging 전송 테스트

16, FMX 앱을 안드로이드 장비에 배포합니다. 실행 시 앱은 자동으로 Firebase에 등록되고, 로그에 디바이스 토큰이 표시됩니다.

이 장비에 푸시메시지를 전송하려면 Firebase 토큰이 필요합니다. 로그에 표시된 토큰을 복사합니다.

 

17, 브라우저에서 Google Firebase 콘솔(https://console.firebase.google.com/) 접속 후 앞에서 만든 프로젝트를 선택합니다.

사이드 메뉴의 "성장 > Cloud Messaging" 메뉴를 선택 후 [Send your first message] 버튼을 클릭합니다.

 

18, 알림의 제목과 텍스트를 입력하고, [테스트 메시지 전송] 버튼을 클릭합니다.

16에서 선택한 Firebase 토큰을 "FCM 등록 토큰 추가" 항목에 입력 후 (+) 버튼 클릭해 토큰을 추가합니다.

[테스트] 버튼을 눌러 메시지를 전송합니다.

다음 화면과 같이 전송한 메시지가 안드로이드 화면에 표시되는 것을 확인할 수 있습니다. 또한 메시지는 안드로이드 알림센터에도 표시됩니다.

험프리.김현수 분류없음 FCM, FireBase Cloud Messaging, FMX, PushNotification, Push알림, 안드로이드 푸시

  1. Blog Icon
    이윤희

    10.3.1의 Firebase Android Push Notification은 iOS 지원이 안되는거죠??

  2. Blog Icon
    이경백

    설명 감사합니다.
    User(고객사의 관리자)가 Mobile Users들에게 Message를 Send하려면
    VCL 프로젝트에서 FCM App으로 Message를 Send하는 방법은 없나요?
    매번 17번 18번처럼 개발자의 Google console에 들어와서 할수는 없을 텐데요.
    GCM에서는 TBackendPush.PushData()로 구현했습니다.