# FCM Cloud Messaging
> Firebase 提供的應用程式通知工具 FKT

----
## 可應用通知平台
既然是通知,想必是應用在使用者的環境
- Android
- IOS
- Unity
- Web
- Flutter
----
## 通知流程架構 BaaS

---
## 實作環節
----
### 被通知者 Flutter 為例
放置 Firebase Service 設定檔案

----
```dart=
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();//初始化 Firebase Core
messaging = FirebaseMessaging.instance; //取得 FCM 物件
final fcmToken = await messaging.getToken();
//設置使用者 Token 用於發布
print(fcmToken);
// 也可以透過訂閱主題 發布給訂閱者
await messaging.subscribeToTopic('flutter_notification');
// 套用 Firebase 初始化監聽器
FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler);
runApp(MyApp());
}
```
----
### 發布者以 Python 為例

----
```python=
import firebase_admin
import os
from firebase_admin import credentials
from firebase_admin import messaging
# 從 Firebase Console 下載
cred = credentials.Certificate('petmonitoringsystem-729da-firebase-adminsdk-85ae8-e6dd9c9252.json')
firebase_admin.initialize_app(cred)
message = messaging.Message(
notification=messaging.Notification(
title='FCM Notification',
body='This is a test notification from FCM'
),
token=os.getenv("FCM_DEVICE_TOKEN")#剛剛 Flutter 取得的使用者 Token
)
response = messaging.send(message)
print('Successfully sent message:', response)
```
---

----
## 謝謝大家
{"title":"FCM Cloud Messaging","description":"Firebase 提供的應用程式通知工具","contributors":"[{\"id\":\"4c8f8799-9dcd-430b-b7bc-8a5156d39d0b\",\"add\":439,\"del\":201},{\"id\":\"c9bb5943-b8b2-41d2-a9e6-389115a01c50\",\"add\":1550,\"del\":189}]"}