虎視眈々と

Flutter × Firebaseを研究するアプリエンジニア

FlutterからFirebase MessagingのAPIを叩いてPush通知を打つ

f:id:superman199323:20181119224536j:plain

FlutterからFirebase MessagingのAPIを叩いてPush通知を打つ

Firestoreでデータが入ったら変更をフックして、Cloud functionを起動してFirestoreから適切なデータを取得してPush通知を打つようにしたのですが、どうしてもパフォーマンスが悪かったです。

ちなみにPush通知の上の方法でPush通知を打つには下記をご覧ください。

www.shogogeek.com

直接Firebase MessagingのAPIを叩いてPush通知を打つことにした

Twitterで呟いたところ直接Push通知を打つAPIを叩けばいいんじゃない?とアドバイスをいただいたのでやってみた

Flutterから叩く方法を実装する

Flutterから直接叩く実装は下記です。

import 'dart:convert' show Encoding, json;
import 'package:http/http.dart' as http;

postPushNotification(String title, String description) async {
    final postUrl = 'https://fcm.googleapis.com/fcm/send';

    final data = {
      "to": "/topics/all",
      "notification": {"title": "テストです", "body": "Titileです"},
      "priority": 10,
    };

    final headers = {
      'content-type': 'application/json',
      'Authorization':
          'key=<firebase-api>'
    };

    final response = await http.post(
      postUrl,
      body: json.encode(data),
      headers: headers,
    );

    if (response.statusCode == 200) {
      print("成功");
    } else {
      print("失敗");
    }
  }

これで叩けました。