Не удается прочитать полезные данные push-уведомлений, отправленных с панели инструментов clevertap - PullRequest
0 голосов
/ 26 марта 2019

В своем приложении «Реактивный» я использую clevertap для отправки push-уведомлений.Я получаю уведомления на мобильный, но не могу прочитать его данные.

Ответы [ 2 ]

2 голосов
/ 27 марта 2019

Вы можете обработать Push-уведомление с помощью CleverTap двумя различными способами.

Способ 1: Разрешение CleverTap обрабатывать Push-уведомления напрямую.Для этого просто укажите следующий код в файле манифеста

<service
    android:name="com.clevertap.android.sdk.FcmTokenListenerService">
    <intent-filter>
        <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
    </intent-filter>
</service>

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

Способ 2. Обработка полезных данных на вашем конце.Вы можете сделать это следующим образом.

Шаг 1. Добавьте пользовательский прослушиватель сообщений FCM в свой файл манифеста.

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

Шаг 2. В прослушивателе сообщений FCMСлужба, вы получите полезную нагрузку, с которой вы можете справиться следующим образом.

public class MyFcmMessageListenerService extends FirebaseMessagingService {

@Override
public void onMessageReceived(RemoteMessage message){
    try {
        if (message.getData().size() > 0) {
            Bundle extras = new Bundle();
            for (Map.Entry<String, String> entry : message.getData().entrySet()) {
                extras.putString(entry.getKey(), entry.getValue());
            }

            NotificationInfo info = CleverTapAPI.getNotificationInfo(extras); //info will get the payload.

            if (info.fromCleverTap) {
                CleverTapAPI.createNotification(getApplicationContext(), extras);
            } else {
                // not from CleverTap handle yourself or pass to another provider
            }
        }
    } catch (Throwable t) {
       Log.d("MYFCMLIST", "Error parsing FCM message", t);
    }
}

}

Надеюсь, это поможет.Для дальнейших вопросов, вы можете написать свой запрос на support@clevertap.com

2 голосов
/ 26 марта 2019

Для обработки полезных данных push-уведомлений iOS и обработки ответа пользователя на уведомление iOS предоставляет метод делегата

userNotificationCenter: didReceiveNotificationResponse: withCompletionHandler:

Вы можете реализовать то же самое, выполнив следующие шаги:

  • Перейдите к файлу AppDelegate> И к фреймворку

    #import <UserNotifications/UserNotifications.h>

  • Кроме того, добавьте UNUserNotificationCenterDelegate

    @interface AppDelegate () <UIApplicationDelegate,UNUserNotificationCenterDelegate>

  • Обработка методов делегата для пользовательских уведомлений

- (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void(^)())completionHandler{

   NSLog(@"User Info : %@",response.notification.request.content.userInfo); //for getting response payload data
   completionHandler();
}

Кроме того, если вы хотите определить, исходило ли уведомление от CleverTap, вызовите этот метод:

- (BOOL)isCleverTapNotification:(NSDictionary *)payload;

Вы должны вручную вызвать SDK следующим образом / Добавить следующий код CleverTap к вашему AppDelegate

- (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)(void))completionHandler {

    if ([[CleverTap sharedInstance] isCleverTapNotification:response.notification.request.content.userInfo]) {
       ...
    }
    completionHandler();
}

Надеюсь, это поможет. По дополнительным вопросам вы можете писать на https://community.clevertap.com/

...