3

是否可以在不使用 Google 服务器的情况下向 android 应用程序发送推送通知:C2DM

所以,我想拥有自己的服务器,直接向应用程序发送通知,但我不确定设备如何感知通知,因为即使应用程序没有运行并且通知设备也需要接收通知应该出现在通知中心。

我认为来自www.airpush.com的人已经做到了这一点,但我不知道是怎么做到的。

任何人都可以帮我解决这个问题吗?

更新:

另外我想知道如果我不使用 C2DM,如何在通知中心显示通知?如果可以将通知中心配置为从我的服务器接收通知,即使用户删除我们开发的应用程序,注册该设备以接收通知的应用程序。

我想每天发送 3-4 条通知,但这些通知需要出现在通知中心,并且它们应该只通过我们的服务器。如何在应用程序中配置通知中心以在我的服务器上发出推送通知请求。

谢谢你!

4

6 回答 6

3

UrbanAirship 有一个名为Helium push的解决方案。根据文档氦:

适用于 Android 1.6 及更高版本
不需要 Google 帐户
无默认每日推送限制
无默认每分钟推送限制
适用于 Amazon 设备(例如 Kindle Fire)
端到端 Urban Airship 支持(即 API 到设备)
最佳吞吐量

问题是您需要开发应用程序密钥才能使用此密钥。

于 2012-05-04T13:48:50.860 回答
3

看看MQTT

MQTT 代表 MQ 遥测传输。它是一个发布/订阅、极其简单和轻量级的消息传递协议,专为受限设备和低带宽、高延迟或不可靠的网络而设计。

它可以用于(并在某些应用程序中使用)来实现自定义服务器推送解决方案。使用 MQTT 的最著名的应用程序之一是Facebook Messanger

您可以在 Internet 上轻松找到有关 MQTT 的更多信息,例如在这个 SO question这篇博客文章中。

于 2012-05-04T22:42:39.647 回答
2

根据airpush.com 上的FAQ,他们没有使用真正的推送通知,而是每天轮询服务器几次。我认为这对您来说也是一个可行的解决方案的一个原因是,Android 的 C2DM 显然利用了 Google Play 商店,因此它不适用于分布在 Google 生态系统之外的设备。已经售出超过 500 万台 Kindle Fire,这值得思考。

来自 Airpush 常见问题解答:

当从 Android™ 应用程序的主要活动执行一次时,Airpush 客户端利用 Android™ 操作系统的 AlarmManager 框架来安排每天几次正在进行的服务器轮询事件。如果从服务器轮询广告,则将其缓存到最佳显示时间,该时间由服务器通过算法确定。

于 2012-05-04T13:42:46.207 回答
0

如果不使用 C2DM,则没有“真正的推送通知”选项。因为(afaik,如果我错了,请纠正我)一个 android 设备在谷歌注册(他们仍然可以通过远程从你的手机中卸载恶意软件)并且使用这个 ip,他们可以进行推送通知。所有其他解决方案可能往往是“在服务器上注册,保持连接活动并等待请求”或其他东西,并且往往更耗电。

于 2012-05-04T13:47:12.260 回答
0

如果您希望用户每天只收到 3-4 条消息,并且您的消息不受特定到达时间的限制,则不需要推送机制。只需在您的应用程序中创建一个服务,该服务每天检查您自己的 Web 服务 5-10 次。如果有新数据,让你的应用在通知中心显示。如果您不想让服务一直运行(就像许多消息传递应用程序一样),您可以设置警报(使用 Android AlarmManager 框架)定期唤醒您的应用程序以检查要显示的新消息。

如果可以将通知中心配置为从我的服务器接收通知,即使用户删除我们开发的应用程序,注册该设备以接收通知的应用程序。

听起来您想编写病毒或 root 工具包;-) 您可以使用电子邮件来代替您的消息。

2013 年 12 月 30 日更新:正如我在评论中所指出的,重建 GCM 所做的并不是一个好方法。当 Google 服务已经加载具有此功能的设备时就足够了。如果您的目标只是让 Google 看不到您发送给用户的消息,那么您不妨对它们进行加密。对于 Google 无法实际读取您的消息,客户端应用程序应生成一个密钥并将其发送到您的服务器。然后,您通过 GCM 发送的所有消息都可以使用该密钥进行加密。

如果您只是想规避 Google 对发送给用户的消息数量的限制,您可以将多条消息打包到一个 GCM 通知中并一个接一个地显示。但是话又说回来,我们又回到了前面描述的某种轮询解决方案,除了当您想要显示缓存在设备上的消息时,用户不需要访问互联网。

于 2012-07-06T13:47:07.123 回答
0

Parse 具有出色的 Android 推送通知服务,非常易于设置。更多信息:解析 Android 通知文档

于 2012-08-11T22:28:57.010 回答