質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

0回答

2448閲覧

FCMのトピックを使ったPush通知でレスポンスを取得したい

otomodayo

総合スコア10

Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2020/11/19 02:30

現在、FCMを使ってAndroidアプリにPush通知機能を送っています。

サーバー側(PHP)からトピックを管理できるよう、
以下サイトを参考にトピックを作成〜メッセージの送信までの処理を記述いたしました。

▼参考サイト
https://firebase-php.readthedocs.io/en/5.11.0/cloud-messaging.html#send-messages-to-topics

PHP

1use Kreait\Firebase\Messaging\CloudMessage; 2 3// サービスアカウントのパスを指定 4$factory = (new Factory)>withServiceAccount('my paths'); 5$messaging = $factory->createMessaging(); 6 7// トピックを作成 8$topic = 'test-topic'; 9 10// 送信対象のデバイストークン 11$deviceTokens = array("token1", "token2"); 12 13// トピックにデバイストークンを登録 14$messaging->subscribeToTopic($topic, $deviceTokens); 15 16// 通知内容を作成 17$notification = Notification::fromArray([ 18 'title' => "テストタイトル", 19 'body' => "テスト本文" 20]); 21 22// トピックに対してPush通知を送信 23$message = CloudMessage::fromArray([ 24 'topic' => $topic, 25 'notification' => $notification 26]); 27 28// こちらをvar_dumpすると、正しいトークンでも間違ったトークンでも以下が表示される 29// ex) 'name' => string 'projects/my-project/messages/111111' 30$messaging->send($message);

無事Push通知は送信できたのですが、
送信後のレスポンスの中身(success / failure)の取得の仕方が分からず困っています。

参考サイトの「複数デバイスに送信する」の項目には結果の取得方法が記載されていたのですが、
「トピックに送信する」の項目には結果の取得方法は記載されていませんでした。

▼ご参考までに、「複数デバイスに送信する」の項目に記載されていた結果の取得方法を記載いたします。

PHP

1$report = $messaging->sendMulticast($message, $deviceTokens); 2 3echo 'Successful sends: '.$report->successes()->count().PHP_EOL; 4echo 'Failed sends: '.$report->failures()->count().PHP_EOL; 5 6if ($report->hasFailures()) { 7 foreach ($report->failures()->getItems() as $failure) { 8 echo $failure->error()->getMessage().PHP_EOL; 9 } 10}

何かしらクラスやメソッドは用意されていると思うのですが、
ちゃんとPush通知が送られているのかサーバー側で確認する方法をご存知であれば、
ご教示いただけますと幸いです。

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問