是否可以在不使用Google server: C2DM的情况下向Android应用程序发送推送通知?
所以,我想拥有自己的服务器直接向应用程序发送通知,但我不确定设备是如何感知通知的,因为即使应用程序没有运行,设备也需要接收通知并且通知应出现在通知中心。
我认为来自www.airpush.com的人已经成功了,但我不确定如何。
有人可以帮我这个吗?
更新:
另外,我想知道如果我不使用C2DM,如何在通知中心显示通知?如果可以将通知中心配置为从我的服务器接收通知,即使用户删除了我们开发的应用程序,也会注册该设备以接收通知的应用程序。
我想每天发送3-4个通知,但这些通知需要出现在通知中心,它们应该只通过我们的服务器。如何在应用程序中配置通知中心,以便在我的服务器上发出推送通知请求。
谢谢!
答案 0 :(得分:3)
UrbanAirship有一个名为Helium push的解决方案。根据文件Helium:
适用于Android 1.6及更高版本 不需要Google帐户
没有默认推送每天限制
没有默认推送每分钟限制
适用于亚马逊设备(例如,Kindle Fire)
端到端城市飞艇支持(即设备的API)
最佳吞吐量
问题是您需要使用开发应用程序密钥才能使用此密钥。
答案 1 :(得分:3)
看看MQTT:
MQTT代表MQ遥测传输。它是一种发布/订阅,极其简单和轻量级的消息传递协议,专为受限设备和低带宽,高延迟或不可靠的网络而设计。
可以使用它(并在某些应用程序中使用)来实现自定义服务器推送解决方案。使用MQTT的最着名的应用之一是Facebook Messanger。
您可以在Internet上轻松找到有关MQTT的更多信息,例如: in this SO question或in this blog post。
答案 2 :(得分:2)
根据airpush.com上的常见问题解答,他们没有使用真正的推送通知,而是每天轮询服务器几次。我认为这对你来说是一个可行的解决方案的一个原因是Android的C2DM显然使用了Google Play商店,所以它不适用于分布在Google生态系统之外的设备。已售出超过500万台Kindle Fire,值得考虑。
来自Airpush FAQ:
当从Android™应用程序的主要活动执行一次时,Airpush客户端利用Android™OS的AlarmManager框架每天安排几次正在进行的服务器轮询事件。如果从服务器轮询广告,则会将其缓存到最佳显示时间,该时间由服务器在算法上确定。
答案 3 :(得分:0)
如果不使用C2DM,则无法选择“真实推送通知”。因为(afaik,纠正我,如果我错了)一个Android设备在谷歌注册(他们仍然可以通过远程从你的手机卸载恶意软件)和这个IP他们能够做推送通知。所有其他解决方案可能倾向于“在服务器上注册,保持连接处于活动状态并等待请求”等等,并且往往会降低电池效率。
答案 4 :(得分:0)
如果您希望用户每天只收到3-4封邮件,并且您的邮件不受特定到达时间的限制,则不需要推送机制。 只需在您的应用中创建一项服务,每天检查您自己的网络服务5-10次。如果有新数据,请让您的应用在通知中心显示。 如果您不希望服务一直在运行(就像许多消息传递应用程序一样),您可以设置警报(使用Android AlarmManager框架),定期唤醒您的应用程序以检查要显示的新消息。
如果可以配置通知中心接收 即使用户删除了应用程序,也会从我的服务器发出通知 由我们开发,注册该设备接收的应用程序 通知。
这听起来像是要编写病毒或root工具包;-)您可以使用电子邮件代替您的邮件。
更新2013-12-30: 正如我在评论中所指出的那样,重建GCM所做的并不是一个好方法。当Google服务已经使用此功能加载设备时就足够了。如果您的目标只是Google没有看到您向用户发送的邮件,那么您也可以加密它们。对于Google无法实际阅读您的邮件,客户端应用应生成密钥并将其发送到您的服务器。然后,您通过GCM发送的所有邮件都可以使用该密钥加密。
如果您只是想绕过Google对发送给用户的邮件数量的限制,您可以将多条邮件打包到一个GCM通知中,然后依次显示它们。但话又说回来,我们回到了前面描述的某种轮询解决方案,除了当用户在设备上缓存消息时,用户不需要访问互联网。
答案 5 :(得分:0)
Parse为Android提供了出色的推送通知服务,非常易于设置。更多信息:Parse Android Notification Doc