Обработка fcm уведомления о клике - PullRequest
1 голос
/ 14 февраля 2020

Я использую fcm для отправки сообщений. Сообщения поступают в приложение, но когда пользователь нажимает на уведомление, он должен открыть ссылку, но просто открывает приложение. Мой манифест выглядит так:

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


    <meta-data
        android:name="com.google.firebase.messaging.default_notification_channel_id"
        android:value="@string/default_notification_channel_id"/>

Там, где уведомление должно обрабатываться:

Bundle extras = getIntent().getExtras();
    if (extras != null && extras.containsKey("rateUpdate")) {
        try {
            startActivity(new Intent("android.intent.action.VIEW", Uri.parse("market://details?id=tino.varconn.com.fastnetworks")));
        } catch (ActivityNotFoundException unused) {
            startActivity(new Intent("android.intent.action.VIEW", Uri.parse("http://play.google.com/store/apps/details?id=tino.varconn.com.fastnetworks")));
        }
    }

При отправке сообщения я всегда проверяю, чтобы в ключе значения текстовых полей I положить rateUpdate. Куда я здесь не так?

1 Ответ

0 голосов
/ 14 февраля 2020

Внутри класса FirebaseMessagingService вы можете получать контент из уведомлений pu sh и создавать свои собственные уведомления

    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        super.onMessageReceived(remoteMessage);

        Notification notification = remoteMessage.getNotification()
        String title = notification.getTitle()
        String body = notification.getBody();
        //now you can build and show your own notification
    }

с помощью метода .setContentIntent(), где вы можете установить любое действие, которое хотите запустить.

        NotificationCompat.Builder builder = ...
        Intent intent = new Intent(context, destinationClass);
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
        PendingIntent contentIntent = PendingIntent.getActivity(context, 0, intent,
            0);
        builder.setContentIntent(contentIntent);
...