Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Firebase (FCM) HTTP v1 API 지원 #2323

Merged
merged 16 commits into from Apr 28, 2024
Merged

Firebase (FCM) HTTP v1 API 지원 #2323

merged 16 commits into from Apr 28, 2024

Conversation

kijin
Copy link
Member

@kijin kijin commented Apr 23, 2024

2024년 6월 20일에 서비스가 종료되는 Legacy HTTP API를 대신하여, 대체재인 HTTP v1 API를 사용하여 푸시알림을 전송하는 기능을 추가합니다.

HTTP v1 API는 기존의 API key가 아닌 Google OAuth2를 사용하여 인증해야 합니다.

Firebase 콘솔에서 "서비스 계정" 탭으로 이동하여, "새 비공개 키" (New private key) 버튼을 누르면 JSON 파일이 다운로드되는데, 이 파일 내용을 관리자 화면의 FCM 설정 화면에 입력하면 됩니다.

그 밖의 변경사항

  • 한 번에 500개의 토큰까지 지원하던 기존 API와 달리, HTTP v1 API는 한 번에 1개의 토큰에만 알림을 보낼 수 있습니다.
    • 10개씩 묶어서 HTTP::multiple()로 처리하도록 했으나, 만약 토큰이 500개라면 여전히 50회 반복해야 하므로 시간이 많이 걸릴 수 있습니다. 이 부분은 백그라운드 작업으로 구현하는 것이 더 효율적일 것입니다.
    • 특정한 토픽에 메시지를 보내는 기능도 추가하였으니, 게시판 새 글 알림처럼 다수의 회원에게 똑같은 내용으로 알림을 보내는 일이 많다면 토픽 단위로 처리하는 것을 추천합니다.
  • 구글 인증 토큰 발급과 관련된 라이브러리 몇 개를 추가했고, 그 과정에서 composer로 끌어오는 다른 라이브러리들도 몇 가지 업데이트되었습니다. PHP 7.2 이상 지원해야 하므로, 아직 구 버전에 묶여 있는 라이브러리가 몇 개 있습니다.
  • 발급된 토큰을 캐싱하기 위해, PSR-6 캐싱 표준을 따르는 Rhymix\Framework\Helpers\CacheItemPoolHelper 클래스를 추가하였습니다. Psr\Cache\CacheItemPoolInterface가 필요한 곳이라면 어디든지 사용할 수 있습니다.
    • 기본적으로 Rhymix\Framework\Cache의 설정을 따르지만, 몇 가지 차이가 있습니다.
      • APC를 사용하는 경우 PHP-CLI에서는 사용이 원활하지 않으므로, 이 경우 dummy로 전환됩니다.
      • 캐시 그룹 버전을 지원하지 않습니다.
  • 기존 API 설정 화면에는 서비스 종료와 관련된 경고문을 표시합니다.

앞으로의 계획

  • 토픽 기능을 사용하여 전체 알림, 게시판 구독 알림 등을 구현하기가 좀더 쉬워질 것으로 예상됩니다.
  • 국내 서버 기준 구글보다 응답이 빠르고, 다수의 메시지를 좀더 편리하게 전송할 수 있는 카카오 푸시 API, 네이버 SENS 등을 추가로 지원하는 것도 고려하겠습니다.
  • 구글, 카카오, 네이버 등 최근 대부분의 푸시 서비스가 안드로이드와 iOS 기기를 모두 지원하는 추세이므로, 현재 별도로 떨어져 나와 있는 APNS 연동 클래스는 삭제하는 것을 고려하겠습니다.

@kijin kijin changed the title Firebase (FCM) HTTP v1 API 적용 Firebase (FCM) HTTP v1 API 지원 Apr 23, 2024
@kijin kijin merged commit 77b5762 into rhymix:develop Apr 28, 2024
7 checks passed
@kijin kijin deleted the fcm-http-v1 branch May 6, 2024 14:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant