将通知从 Mixpanel 仪表板推送到 Android Cordova 应用程序

Push notification from Mixpanel dashboard to Android Cordova app

我使用 phonegap-plugin-push.

成功地将推送通知从 Mixpanel 仪表板发送到 iOS 和 Android 设备上的 Cordova 应用程序

但是,在默认字段中输入的标题和 body 值仅出现在 iOS 设备上。

为了在 Android 台设备上显示通知,我目前需要在 Mixpanels 中包含一个自定义负载 "Custom Data":

{
"title":"Title for Android only",
"body":"Content for Android only"
}

对于任何 non-technical 使用 Mixpanel 发送通知的人来说,这是一个容易出错的步骤。

有人知道更简单的方法吗?

这里的简短回答是 Cordova/Phonegap 和类似的第三方框架并未针对 Mixpanel 功能进行 100% 优化(尽管它们工作得很好),因此您需要为 Mixpanel 生成单独的推送通知iOS 和 Android 在你的 Mixpanel 项目中。

提供上下文,所有 iOS 推送,无论应用程序如何,都使用相同的密钥向 APN 发送 JSON 有效载荷来发送消息(警报、徽章、声音)。但是,Android 应用程序为传入的 GCM 推送处理的密钥完全取决于 GCM 接收器的建立方式,这就是问题所在。

Mixpanel 的 Android SDK 初始化推送并使用特定于 Mixpanel 消息的 GCM 接收器,并完全期望其自定义键(mp_message、mp_title)以呈现通知。 Web 应用重新格式化消息输入以满足这些关键要求 (http://bit.ly/1OGgU1y)

但是,正如您所注意到的,Phonegap GCM 接收器需要不同的密钥。我建议参考 phonegap github 页面,以便在预期的推送格式和行为中获得更多上下文(看起来他们期望 "title" 和 "message" 作为键):http://bit.ly/1KDScye

不幸的是,这意味着 Android 应用程序未优化以接收默认的网络应用程序生成的 Mixpanel 推送,尽管您的 iOS 是。 Mixpanel 的 SDK 旨在最大限度地发挥该平台的功能,并且不能保证 Cordova 或类似的 JS 框架将 100% 转换。

总而言之 - 在 Mixpanel 推送编辑器中创建一条消息将发送到 iOS,但对于 Android,您需要在单独的文件中使用自定义 JSON 负载通知,包括 phonegap GCM 接收器兼容的密钥。

如果对任何人有帮助,这就是我解决问题的方法 在 phonegap-plugin-push

您需要修改两个文件

  1. GCMIntentService.java

    私有字符串 normalizeKey(字符串键){
    如果 (key.equals(BODY) || key.equals(警报) || key.equals(MP_MESSAGE) || key.equals(GCM_NOTIFICATION_BODY)) { // 添加了 MP_MESSAGE

  2. PushConstants.java

    public 静态最终字符串 MP_MESSAGE = "mp_message";