moshimore Knowledge

アプリ開発とメモ書き、日々の日記。

FCMのonMessageReceivedが呼ばれない

f:id:moshimore:20170910233137j:plain

開発中のアプリ「モニタリングカメラ」はクライアントアプリからのプッシュ通知でカメラ機能を起動させるのですが、そこで問題が発生しました。

カメラ側アプリを起動させ、常駐状態でしばらくはカメラが動作するものの数時間経つと動作しなくなります。
エラーを見ると次のような内容が…。

W/GCM-DMM: broadcast intent callback: result=CANCELLED forIntent { act=com.google.android.c2dm.intent.RECEIVE flg=0x10000000 pkg=XXXXX (has extras) }

こちらを参考にしていたのですが、バックグラウンド時。つまり、アプリが起動していない状態でも、onMessageReceivedが呼び出されるものだと思っていました。

https://firebase.google.com/docs/cloud-messaging/android/receive?hl=ja


海外サイトなどいろいろ調べていましたが解決には至らず、次の記事を発見。

qiita.com

新しいGCM、これはほぼ現在のFCMになりますが、ここからバックグラウンド時にはonMessageReceivedが呼ばれないという仕様が導入されました。

なんと、旧バージョンのGCMでは呼ばれていたものがFCMになって呼ばれない仕様に変更されたとは。

回答に解決したとあるが、どう解決できのだろう。

teratail.com

ja.stackoverflow.com

stackoverflow.com