コンテンツにスキップ

FCMメッセージの受信

FCMメッセージを受信するクラスを作成します。

メッセージの受信

FirebaseMessagingServiceクラスを継承し、onMessageReceived()を実装します。
FCMでメッセージを受信すると同メソッドが呼ばれます。
この時点ではステータスバーや通知ドロワーに通知は表示されませんので、表示するための処理を実装します。

//FirebaseMessagingServiceクラス
void onMessageReceived(RemoteMessage message)
パラメータ 内容
message プッシュ通知の内容

クラス名は任意です。変更する場合は、マニフェストの記述も変更してください。


AndroidManifest.xml

Android Studioプロジェクトの設定で設定したマニフェストの例
FirebaseMessagingServiceBaseクラスを作成する。

<service
   android:name=".FirebaseMessagingServiceBase">
   <intent-filter>
       <action android:name="com.google.firebase.MESSAGING_EVENT"/>
   </intent-filter>
</service>



通知の表示

受信したメッセージをステータスバーや通知ドロワーに表示するために、RichFlyer SDKのRFSendPushInformation.setPushData()を使います。
RFSendPushInformationのコンストラクタにステータスバーに表示する通知アイコンを設定することができます。

//RFSendPushInformationクラス
RFSendPushInformation(Context context, @DrawableRes int iconResourceId)
パラメータ 内容
context FirebaseMessagingServiceクラスのコンテキスト
iconResourceId ステータスバーに表示するアイコンのリソースID


//RFSendPushInformationクラス
void setPushData(Map<String, String> data)
パラメータ 内容
data プッシュ通知データ。RemoteMessage.getData()で取得する。


実装例

Java
import com.google.firebase.messaging.FirebaseMessagingService;
import com.google.firebase.messaging.RemoteMessage;
import jp.co.infocity.richflyer.RFSendPushInformation;

public class FirebaseMessagingServiceBase extends FirebaseMessagingService {

    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
       super.onMessageReceived(remoteMessage);
        // メッセージの取得

        // RFSendPushInformationをインスタンス化
        // 通知受信時に通知バーに表示するアイコンを設定
        RFSendPushInformation spi = new RFSendPushInformation(this, R.mipmap.ic_notice);

        // 通知ドロワーに受信したプッシュ通知を表示する
        spi.setPushData(remoteMessage.getData());
   }
}