使用 parse.com 的多个推送提供商
Posted
技术标签:
【中文标题】使用 parse.com 的多个推送提供商【英文标题】:multiple push providers with parse.com 【发布时间】:2015-03-10 10:57:35 【问题描述】:我有一个带有自制推送提供商的产品。我们尝试将 parse.com 添加为提供程序。
ios 没问题(操作系统管理推送,一切都可以使用统一插件)。
但是我对 android 很困惑,我尝试了很多不同的东西,但我从来没有从解析和我们的推送中使用相同的配置。我集成了parse android plugin 1.8.3,在manifest中添加所有数据,修改Application类到init Parse,一切正常。发送安装数据进行解析。我可以使用仪表板发送推送,我有“这将被发送到 1 个设备”,但发送成功后状态为“0 推送已发送”。没有错误,设备上没有任何附加内容。
我在哪里可以找到我针对 1 个设备的原因以及发送 0 个推送的原因?真的有可能拥有 2 个不同的服务来管理 com.google.android.c2dm.intent.RECEIVE 和 com.google.android.c2dm.intent.REGISTRATION 吗?
清单推送部分:
<service android:name="com.parse.PushService" />
<receiver android:name="com.parse.ParseBroadcastReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.USER_PRESENT" />
</intent-filter>
</receiver>
<receiver android:name="com.parse.ParsePushBroadcastReceiver" android:exported="false">
<intent-filter>
<action android:name="com.parse.push.intent.RECEIVE" />
<action android:name="com.parse.push.intent.DELETE" />
<action android:name="com.parse.push.intent.OPEN" />
</intent-filter>
</receiver>
<receiver android:name="com.parse.GcmBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="bundleId" />
</intent-filter>
</receiver>
<!-- GCM homemade notifications -->
<service android:name="com.homemade.unityApp.notifications.UnityGCMReceiverService" />
<receiver android:name="com.homemade.unityApp.notifications.UnityGCMCustomBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="bundleId" />
</intent-filter>
</receiver>
【问题讨论】:
【参考方案1】:是的,可以在同一个应用程序上进行两次推送
您必须按照官方指南https://developer.android.com/google/gcm/client.html 中的说明在清单上设置permission
和users-permission
并在清单上有两个receive
,并带有适当的intent-filter
两个 SDK 都必须注册推送。一个例子是我正在开发的应用程序,我们有:
GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(context);
String regid = gcm.register(GCMID);
和
Localytics.registerPush(GCMID);
一个来自我们自己的服务器,一个来自 localytics push。我相信 parse.com 会使用 registerPush
方法。
在这种情况下,BroadcastReceiver
都会收到消息,因此有必要在推送消息中放置一个令牌,以过滤其中哪些应该忽略该消息,哪些应该对其采取行动。
【讨论】:
谢谢,我确定 2 注册没问题,我手动更改了 Parse 数据库中的一些数据,我收到了两者的推送,现在我必须找到如何在不更改数据的情况下执行此操作我的小手,Parse 要求我们添加一个元,但我怀疑这个元被忽略了。 在我的应用程序中,我们添加了接收者收到的捆绑包 "fromLocalytics":"true" 并在运行时检查它 嗨 Budius:我也在尝试在 Android 上集成 Localytics,但我遇到了一个问题。你能看看这个问题吗(谢谢!):***.com/questions/32072845/…【参考方案2】:我找到了解决方案,我添加了好几次都没有成功。 我尝试在发送安装数据时在 java 代码中添加 senderId 并且它可以工作。我真的不知道为什么只是添加元不起作用,也许我错过了一些东西。
所以原始清单是可以的,parsegcmbroadcaster 似乎正确过滤了通知。
【讨论】:
以上是关于使用 parse.com 的多个推送提供商的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Android 中禁用多个推送通知图标,我正在使用 Parse.com