从fcm Android

时间:2017-08-30 09:53:46

标签: android firebase firebase-realtime-database push-notification firebase-cloud-messaging

我正在使用FCM进行通知,它在Foreground和后台的所有场景中都运行良好。我的问题是当我从我的应用程序注销而另一个用户向我发送消息时,我没有收到任何通知,因为我注销这很好,但是当我再次登录我的应用程序时我想收到那个旧的未读通知所以如何这样做任何帮助将不胜感激以下是我使用的代码

public class FirebaseIDService extends FirebaseInstanceIdService {
    private static final String TAG = "FirebaseIDService";
    Context ctx = this;

    @Override
    public void onTokenRefresh() {

        // Get updated InstanceID token.
        try {
            String refreshedToken = FirebaseInstanceId.getInstance().getToken();

            Log.d(TAG, "Refreshed token: " + refreshedToken);

        } catch (Exception e) {
            e.printStackTrace();
        }

    }


}

    public class MyFirebaseMessagingService extends FirebaseMessagingService {
        private static final String TAG = "FCM Service";


        @Override
        public void onMessageReceived(RemoteMessage remoteMessage) {
            super.onMessageReceived(remoteMessage);
            FirebaseDatabase.getInstance().setPersistenceEnabled(true);
            Log.e("remote", remoteMessage.getData().get("type") + "");
            Log.e("remoteMessage", remoteMessage.getData() + "");
            Log.e("remoteMessagebody", remoteMessage.getData().get("body") + "");

// handling other data also according to my app which i am not mentioning

    }
    }

我已经使用此代码获取旧通知但没有工作

 FirebaseDatabase.getInstance().setPersistenceEnabled(true);

并在清单

 <service
            android:name=".MyFirebaseMessagingService"
            android:enabled="true"
            android:exported="true">
            <intent-filter>
                <action android:name="com.google.firebase.MESSAGING_EVENT" />
            </intent-filter>
        </service>
        <service android:name=".FirebaseIDService">
            <intent-filter>
                <action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
            </intent-filter>
        </service>

和gradle

compile 'com.google.firebase:firebase-messaging:9.2.1'

1 个答案:

答案 0 :(得分:0)

FCM邮件有自己的lifetime - 4周默认值,可以通过在您的有效负载中设置time_to_live进行修改。在那之后,该消息将被丢弃。

您可以做的是实现每个通知都保存在您的服务器数据库中,如果它尚未被读取并且您检测到用户重新登录,将其作为推送通知重新发送,或者只是在您的应用并将其显示为通知。