2016-12-12 6 views
1

Мы интегрируем два новых SDK уведомления в одном приложении. Firebase и Salesforce Marketing Cloud (ранее ExactTarget).Проблемы интеграции Exacttarget и FCM

Наши версии IOS работают отлично и никаких помех не обнаружено. Мы отправляем уведомления из обоих инструментов.

Однако у нас возникли проблемы с нашими версиями для Android. Поведение некоторых наших тестов-устройства:

  • Устройство правильно зарегистрировано в двух платформах
  • Устройства получать уведомления без видимых проблем
  • Случайных говоря с точкой зрения времени, Salesforce маркетинг облако не может уведомлять устройства больше. Они по-прежнему Opted В рамках этой платформы, и ET пытается отправить сообщение, но GCM ответы с ошибкой,

InvalidRegistration, 2016-11-22 04: 00: 00, TokenRejection, | ID | 8 |: (ServiceStatus, ServiceResponse, TrackingDate, FailureType, SystemToken)

Наше предположение (что мы сделали много тестов) является то, что изменения в маркеров внутри ГКМ производят, что проблемы. Мы пытались использовать Salesforce новый токен, который каждый раз обновляется (мы получаем его из Firebase), используя их метод Registration.getInstance().setSystemTokenInCache(token), без успеха до сих пор.

+0

Привет, Я пытаюсь добиться того же, но получаю уведомление дважды на Android, если я отправлю с консоли firebase.Это происходит главным образом потому, что уведомление передается в приложение, а не на службу, на мой взгляд. Как вы решили эту проблему? –

+0

Мы не решили. Мы были в контакте с Salesforce и получили несколько советов, но никто из них, похоже, не работал. –

ответ

0

Мы не решили. Мы были на связи с самим Salesforce и получили несколько советов, но никто из них, похоже, не работал:

Вот что нам сказали. Вместо того, чтобы создавать два проекта в Firebase и настраивать файл google-services.json, я просто использовал идентификатор отправителя из одного проекта. В вашем коде вы сохраняете инициализацию облака маркетинга одинаково, а файл google-services.json тот же, вам нужно только изменить вызов FirebaseInstanceId.getInstance(). GetToken(); - FirebaseInstanceId.getInstance(). GetToken ("158036016337", "FCM"); , где первым параметром является ваш идентификатор отправителя (который является тем же идентификатором отправителя, который вы используете в инициализации маркетингового облака), а «FCM» - это область.

Что это было, он возвратил два разных токена, один из Firebase и один из облака маркетинга. Однако оба токена имели префикс из 11 символов, за которым следовал двоеточие, которое было идентичным. Я послал к толкам, используя оба токена, и оба работали хорошо. Затем я подписался на темы в Firebase FirebaseMessaging.getInstance(). SubscribeToTopic ("xxxxx"); И отправил push, используя API Firebase, в эту тему, и это сработало. Отправил некоторые толчки из облака маркетинга, и это сработало. Я согласен, что вы должны это проверить.

+0

Вы должны отредактировать это под своим вопросом. – Nae

+0

Не знаю, как это сделать ... –

+0

левый нижний угол вашего оригинального сообщения. Там есть кнопка редактирования. – Nae

0

Мы решили проблему по-другому. Мы вынудили уведомления получать в нашей службе Firebase (путем реализации правил намерения в манифесте). Затем в методе onMessageReceived() мы проверяем, получено ли уведомление от ExactTarget с PushMessageManager.isMarketingCloudPush(Bundle). Если это правда, мы разрешаем Маркетинговому облаку обрабатывать его через

MarketingCloudSdk.requestSdk(new 

    MarketingCloudSdk.WhenReadyListener() { 
       @Override 
       public void ready(MarketingCloudSdk marketingCloudSdk) { 
        marketingCloudSdk.getPushMessageManager().handlePushMessage(bundle); 
       } 
      }); 

В противном случае мы обрабатываем его как уведомление о пуске Firebase для нашего приложения.