使用 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 中的说明在清单上设置permissionusers-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 的多个推送提供商的主要内容,如果未能解决你的问题,请参考以下文章

使用 Parse.com 从推送通知中提取文本

无法使用 parse.com 控制台发送/接收推送通知

如何在 Android 中禁用多个推送通知图标,我正在使用 Parse.com

parse.com 上的 Apple 推送通知

推送通知未在 IOS8.1 中提供,但在少于 IOS8.1 时工作正常

如何使用 Parse.com Cloudcode 发送推送通知