Cloud Functions에서 Firestore 업데이트를 특정 기기에 푸시 알림
Cloud Functions × Firestore × Firebase Cloud Messaging
Cloud Functions는 서버리스 컴퓨팅 서비스입니다. 다양한 이벤트를 트리거하여 액션을 실행할 수 있어 매우 비용 성능이 우수합니다.
이번에는 이 Cloud Functions를 사용하여 Firestore에 데이터가 추가되면 특정 기기에 push 알림을 받도록 합니다.
구조
알림을 보낼 DB를 디자인합니다. 이번은 단순화를 위해 notifications
라는 컬렉션으로 하고 있습니다.
여기서 미리 테이블에 디바이스의 id가 붙어 있으면 하기 쉽다고 생각합니다.
notifications
│
├── notification
│ ├── text
│ └── users
. ├── bJi8iJLw0ufF1HCO17v3b7UTVS53
. .
. .
Architecture
Steps
다음이 이미 완료된 전제로 구현합니다. 어쩌면 이 기사에 도착하는 사람은 코딩으로 막힌 사람이라고 생각합니다. Firestore 샘플 여기밖에 없었다. . .
알림을 보낼 DB를 디자인합니다. 이번은 단순화를 위해
notifications
라는 컬렉션으로 하고 있습니다.여기서 미리 테이블에 디바이스의 id가 붙어 있으면 하기 쉽다고 생각합니다.
notifications
│
├── notification
│ ├── text
│ └── users
. ├── bJi8iJLw0ufF1HCO17v3b7UTVS53
. .
. .
Architecture
Steps
다음이 이미 완료된 전제로 구현합니다. 어쩌면 이 기사에 도착하는 사람은 코딩으로 막힌 사람이라고 생각합니다. Firestore 샘플 여기밖에 없었다. . .
다음이 이미 완료된 전제로 구현합니다. 어쩌면 이 기사에 도착하는 사람은 코딩으로 막힌 사람이라고 생각합니다. Firestore 샘플 여기밖에 없었다. . .
1. Cloud Functions 시작
먼저 프로젝트를 만듭니다.
$ Firebase init
functions 디렉토리내에 있는
index.js
에 코드를 기술해 갑니다.2. 코드 작성
index.js
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();
exports.sendNotifications = functions.firestore.document('notifications/{notificationId}').onCreate(
async (snapshot) => {
// Notification details.
const newValue = snapshot.data();
const payload = {
notification: {
title:"新規ライブ",
body: newValue.text + "の新しいライブが追加されました!",
content_available: 'true',
sound: "default",
click_action: `https://${process.env.GCLOUD_PROJECT}.firebaseapp.com`,
}
};
const userIDs = newValue.users
// Get the list of device tokens.
userIDs.forEach(function (value) {
admin.firestore().collection('fcmTokens').doc(value).get()
.then(function (querySnapshot) {
let fcmToken = querySnapshot.data().fcmToken
admin.messaging().sendToDevice(fcmToken, payload);
return;
}).catch(error => { return });
});
});
뭐야 이 포인트
샘플에. 그래서 userId와 연결하여 식별할 수 있도록 했습니다.
fcmTokens
│
├── fcmToken(id: uid)
│ └── fcmToken
.
.
우선
const allTokens = await admin.firestore().collection('fcmTokens').get();
의 인수에 컬렉션을 지정합니다. 이번에는 테이블에 새로운 문서가 추가되었을 때 발화하고 싶기 때문에 functions.firestore.document()
를 호출하고 있습니다.그 외에도
onCreate()
, onUpdate()
등 다양한 트리거가 있습니다. 자세한 내용은 여기 .그리고
onDelete()
에 통지의 설정을 합니다.payload
라는 컬렉션에서 fcmtoken을 얻을 수 있습니다. RealtimeDB보다 편리한 느낌.마지막으로
fcmTokens
에서 취득한 사용자의 토큰에 정리해 push 통지를 송신하고 있습니다.3. Deploy
$ firebase deploy
어쩐지 죽으면 로그를 확인하고 조금 고쳐 갑시다.
4. Test
파이썬에서 Firestore에 새 문서를 추가하려고합니다.
import firebase_admin
from firebase_admin import credentials
from firebase_admin import firestore
cred = credentials.Certificate()
firebase_admin.initialize_app()
db = firestore.client()
notification_data = {
"text": "MY FIRST STORY",
"users": ["gHrdAxQhFYdTmoFjgi8RX8PljXv1"]
}
db.collection(u'notifications').document().set(notification_data)
어떤 장치에 push 알림이 오면 오케이. 타쿠 TV 보고 있었던 것은 비밀.
코드는 여기
Reference
이 문제에 관하여(Cloud Functions에서 Firestore 업데이트를 특정 기기에 푸시 알림), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/masatojames/items/b07286ed6771845dd1e6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)