我们正在同一个应用中集成两个新的通知SDK。 Firebase和Salesforce Marketing Cloud(以前称为ExactTarget)。
我们的IOS版本运行良好,未检测到干扰。我们从这两个工具发送通知。
但是,我们的Android版本存在问题。我们的一些测试设备的行为是:
InvalidRegistration,2016年11月22日 04:00:00,TokenRejection,| ID | 8 |:(ServiceStatus,ServiceResponse,TrackingDate,FailureType,SystemToken)
我们的猜测(我们做了很多测试)是GCM中令牌的变化产生了这些问题。我们尝试使用他们的方法Registration.getInstance().setSystemTokenInCache(token)
每次更新(我们从Firebase获取)时将Salesforce推入新的令牌,到目前为止没有成功。
答案 0 :(得分: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&#34); 并使用Firebase API向该主题发送了推送,并且也可以使用。从Marketing Cloud发送了一些推送,并且也有效。我同意你应该测试一下。
答案 1 :(得分:0)
我们以不同的方式解决了这个问题。我们强制在Firebase服务中接收通知(通过在清单中实施意图规则)。然后在return !(s.contains("..") || s.contains("__") || s.contains("._") || s.contains("_."));
方法中,我们检查来自ExactTarget的通知是否为onMessageReceived()
。如果这是真的,我们让Marketing云通过
PushMessageManager.isMarketingCloudPush(Bundle)
否则我们会将其作为我们应用的Firebase推送通知处理。