1

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

我们的 IOS 版本运行良好,未检测到干扰。我们从这两种工具发送通知。

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

  • 设备在两个平台中正确注册
  • 设备在没有明显问题的情况下接收通知
  • 随便从时间上讲,Salesforce 营销云已经不能通知设备了。他们仍然在该平台内选择加入,ET 尝试发送消息,但 GCM 以错误响应,

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

我们的猜测(我们已经做了很多测试)是 GCM 中令牌的变化正在产生这些问题。我们尝试使用他们的方法每次更新(我们从 Firebase 获取)时向 Salesforce 推送一个新令牌Registration.getInstance().setSystemTokenInCache(token),但到目前为止还没有成功。

4

2 回答 2

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 发送一些推送,效果也不错。我同意您应该对此进行测试。

于 2017-11-21T19:46:09.060 回答
0

我们以不同的方式解决了这个问题。我们强制在 Firebase 服务中接收通知(通过在清单中实施意图规则)。然后在onMessageReceived()方法中,我们检查来自 ExactTarget 的通知是否带有PushMessageManager.isMarketingCloudPush(Bundle). 如果这是真的,我们让营销云通过以下方式处理它

MarketingCloudSdk.requestSdk(new 

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

否则我们将其作为我们应用的 Firebase 推送通知来处理。

于 2018-01-31T16:26:12.723 回答