2016-12-12 39 views
1

我们在同一个应用程序中集成了两个新的通知SDK。 Firebase和Salesforce Marketing Cloud(以前称为ExactTarget)。集成Exacttarget和FCM的问题

我们的IOS版本工作正常,没有检测到干扰。我们发送来自两个工具的通知。

但是,我们的Android版本出现问题。我们的一些测试设备的行为是:

  • 设备在两个平台
  • 设备接收通知中正确招收没有明显的问题
  • 在时间上随机地说,Salesforce的营销云不能通知设备了。他们仍然选择加入该平台内,并ET尝试发送邮件,但有错误GCM回应,

InvalidRegistration,2016年11月22日 04:00:00,TokenRejection,| ID |(ServiceStatus,ServiceResponse,TrackingDate,FailureType,SystemToken)

我们的猜测(我们做了很多测试),GCM中令牌的变化产生了这些问题。我们已经尝试使用他们的方法Registration.getInstance().setSystemTokenInCache(token)在每次续订时(我们从Firebase获取它)推入新的令牌,迄今为止没有成功。

+0

嗨,我试图实现同样的事情,但如果我从Firebase控制台发送,我会在Android上收到两次通知。这主要是因为通知是交给应用程序,而不是我认为的服务。你是如何解决这个问题的? –

+0

我们没有解决它。我们与Salesforce本身保持联系,并提供了一些提示,但他们似乎都没有工作。 –

回答

0

我们没有解决它。我们联系了Salesforce本身,并给了一些提示,但他们都没有人似乎工作:

这是我们被告知。我没有在Firebase中创建两个项目并调整google-services.json文件,而是使用了一个项目中的发件人ID。在您的代码中,您将Marketing Cloud初始化保持不变,并且google-services.json文件相同,只需更改呼叫 FirebaseInstanceId.getInstance()。getToken(); 至 FirebaseInstanceId.getInstance()。getToken(“158036016337”,“FCM”); 其中第一个参数是您的发件人ID(与您在Marketing Cloud初始化中使用的发件人ID相同),“FCM”是范围。

这样做的结果是,它返回了两个不同的令牌,一个来自Firebase,另一个来自Marketing Cloud。两个令牌都有一个11个字符的前缀,后跟一个相同的冒号。我发送推送使用这两个令牌,都运作良好。然后,我订购了Firebase 中的主题FirebaseMessaging.getInstance()。subscribeToTopic(“xxxxx”); 然后使用Firebase API向该主题发送推送,并且这也起作用。从Marketing Cloud发送了一些消息,这也起作用。我同意你应该测试这个。

+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); 
       } 
      }); 

否则我们处理它为我们的应用程序火力地堡推送通知处理。