我使用phonegap-plugin-push成功地将Mixpanel信息中心的推送通知发送到iOS和Android设备上的Cordova应用。
但是,在默认字段中输入的标题和正文值仅显示在iOS设备上。
要在Android设备上显示通知,我目前需要在Mixpanels"自定义数据"中包含自定义有效内容:
{
"title":"Title for Android only",
"body":"Content for Android only"
}
对于使用Mixpanel发送通知的任何非技术人员来说,这是一个容易出错的步骤。
有人知道更简单的方法吗?
答案 0 :(得分:4)
这里简短的回答是Cordova / Phonegap和类似的第三方框架没有100%针对Mixpanel功能进行优化(尽管它们工作得非常好),因此您需要为iOS和Android生成单独的推送通知在你的Mixpanel项目中。
提供上下文,所有iOS推送,无论应用程序如何使用相同的密钥向APN提供JSON有效负载以传递其消息(警报,徽章,声音)。但是,Android应用程序处理传入GCM推送的关键完全取决于GCM接收器的建立方式,这就存在问题。
Mixpanel的Android SDK初始化推送并使用特定于Mixpanel消息的GCM接收器,并完全期望其自定义键(mp_message,mp_title)以呈现通知。 webapp重新格式化消息输入以满足这些关键要求(http://bit.ly/1OGgU1y)
然而,正如您所注意到的,Phonegap GCM接收器需要不同的按键。我建议参考phonegap github页面,以获得更多预期推送格式和行为的上下文(看起来他们希望“标题”和“消息”作为键):http://bit.ly/1KDScye
不幸的是,这意味着Android应用程序未经过优化,无法接收默认的网络应用程序生成的Mixpanel推送,尽管您的iOS应用程序是。 Mixpanel的SDK旨在最大化该平台的功能,并且无法保证Cordova或类似的JS框架将100%转换。
总而言之 - 在Mixpanel推送编辑器中创建消息将发送到iOS,但对于Android,您需要在单独的通知中使用自定义JSON有效负载,包括与phonegap GCM接收器兼容的密钥。 / p>
答案 1 :(得分:0)
如果对任何人有帮助,这就是我解决问题的方法 在phonegap-plugin-push
您需要修改两个文件
GCMIntentService.java
private String normalizeKey(String key){
if(key.equals(BODY)|| key.equals(ALERT)|| key.equals(MP_MESSAGE)|| key.equals(GCM_NOTIFICATION_BODY)){//添加MP_MESSAGE
PushConstants.java
public static final String MP_MESSAGE =“mp_message”;