

Firebase ConsoleのNotificationタブからメッセージを作成して送信を行い、メッセージが受信できることを確認しました。  
送信するメッセージは、メッセージ文とラベルを指定し、ターゲットをユーザセグメントにしています。  
<https://gyazo.com/a0d5dd07be0f31e1b3f6da7f0bd56158>

ドキュメントにある通り、

  * アプリがforegroundにある場合（Activityが表示されている）
  * アプリがbackgroundにある場合（ホームボタンを押してActivityが非表示になった状態）

のとき受信ができました。  
しかし、アプリを強制停止した場合、通知が受信されません。  
（強制停止は端末の設定→該当のアプリ→強制停止で行いました）  
その際logcatには以下のエラーメッセージが表示されています。

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

アプリが強制終了されたとしても通知を受け取れるようにするにはどうすればよいのでしょうか？

AndroidManifest.xml

[code]

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
              package="jp.gcreate.sample.samplefirebasenotification"
        >
    
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme"
        >
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
    
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <service
            android:name=".MyFirebaseMessagingService"
            >
            <intent-filter>
                <action android:name="com.google.firebase.MESSAGING_EVENT"/>
            </intent-filter>
        </service>
    </application>
    
    </manifest>
    
[/code]

FirebaseMessagingServiceを拡張したクラス

[code]

    public class MyFirebaseMessagingService extends FirebaseMessagingService {
        private static final String TAG = "FirebaseMessage";
    
        @Override
        public void onMessageReceived(RemoteMessage remoteMessage) {
            super.onMessageReceived(remoteMessage);
    
            Log.d(TAG, "onMessageReceived: " + remoteMessage);
    
            if (remoteMessage.getNotification() != null) {
                Log.d(TAG, "Message Notification Body: " + remoteMessage.getNotification().getBody());
                RemoteMessage.Notification notification = remoteMessage.getNotification();
                NotificationCompat.Builder builder      = new NotificationCompat.Builder(this);
                builder.setContentText(notification.getBody())
                       .setContentTitle(notification.getTitle())
                       .setSmallIcon(R.mipmap.ic_launcher);
                NotificationManagerCompat managerCompat = NotificationManagerCompat.from(this);
                managerCompat.notify(0, builder.build());
            }
        }
    }
    
[/code]


CC BY-SA 3.0
2017-01-20T03:10:44.413
32006
2018-03-25T11:14:53.403
9498
question
android firebase
Firebase Notificationでアプリが強制停止された場合でもpush通知を受け取れるようにするにはどうしたらよいか


端末は何を使ってますか？  
Huaweiなど一部の端末では保護されたアプリでないと通知を表示しません。

> 設定＞詳細設定＞バッテリーマネージャー＞保護されたアプリ


CC BY-SA 3.0
2017-03-16T09:28:55.333
33362
2017-03-16T09:28:55.333
21081
32006
answer