Kindle Fire 的推送通知/C2DM?

Posted

技术标签:

【中文标题】Kindle Fire 的推送通知/C2DM?【英文标题】:Push notifications / C2DM for Kindle Fire? 【发布时间】:2012-01-16 10:06:43 【问题描述】:

AFAIK,推送通知需要 Google 帐户才能工作(它们搭载 GTalk),那么这是否意味着 Kindle Fire 的应用程序如果使用标准 C2DM 方法就注定失败?

我在Kindle Fire FAQ 或网络上的任何地方都找不到任何关于推送的信息。

【问题讨论】:

【参考方案1】:

据我所知是的。我所读到的所有内容都表明,亚马逊从 Fire 中剥离了 C2DM 支持。我知道,对吧?如果您或您的用户愿意根它,installing Google services 是一个选项。

Urban Airship 有一个名为 Helium 的推送服务,据称可以与 Kindle Fire 配合使用。不过我还没有尝试过。

2013 年 8 月 13 日更新

还有Amazon SNS。该主题有great blog。

请参阅此代码 sn-p 了解如何实现接收器(来自 Amazon Web Services 博客):

public class ExternalReceiver extends BroadcastReceiver 
    @Override
    public void onReceive(Context context, Intent intent) 
        Log.i("ExternalReceiver","onReceive");
        Bundle extras = intent.getExtras();
        StringBuilder payload = new StringBuilder();

        for(String key : extras.keySet())
            payload.append(String.format("%s=%s", key, extras.getString(key)) + '\n');
        

        Intent newIntent = new Intent();
        newIntent.setClass(context, androidMobilePushApp.class);
        newIntent.putExtra(context.getString(R.string.msg_field), payload.toString());
            newIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);
        context.startActivity(newIntent);
    

【讨论】:

您知道 GCM 在 Kindle Fire 上是否也无法使用吗? GCM 是 Google 的 C2DM 替代品。 @bovine 不,Kindle Fire 仍然不支持包含 GCM 的 GMS(谷歌移动服务) @stevebot 是否有可能今天 Kindle Fire 仍然不支持 GMS? :S【参考方案2】:

除了 Urban Airship(stevebot 提到)之外,还有类似的替代方案:

Parse.com - 我已经按照他们的快速入门指南成功地向 Kindle Fire 推送了通知。非常直截了当。这是一个分层的免费增值模式,即免费取决于数量。与 Urban Airship 和 Xtify 相比,定价似乎非常合理。

Xtify - 应该也可以,但我还没有尝试过。它使用 XMPP 连接来发送消息。也似乎是免费增值,具体取决于设备的数量(目前说低于 10K 的设备作为“开发者特价”是免费的)。

另外,ralight 提供了一些很好的信息和资源,用于在相关线程中使用 MQTT 实现您自己的推送: Android device needs to be connected to server - C2DM, polling or something third?

【讨论】:

【参考方案3】:

我认为您可以通过 Amazon Web Services for Kindle Fire 使用 SNS 进行推送。

http://aws.amazon.com/sns/

【讨论】:

+1 有帮助的答案,另一种通知方式。 虽然这似乎是对 SNS 的明显使用,但我自己的研究似乎表明目前这实际上是不可能的。您可以将 SNS 与 SMS、电子邮件、SQS 或 HTTP(S) 挂钩,但您无法在移动设备上直接订阅和接收消息而无需轮询。【参考方案4】:

Kindle Fire 似乎缺少 Google 的所有功能。我们最好的猜测是,亚马逊不想与谷歌签订合同来访问他们的专有软件(市场、地图和其他谷歌服务,包括 C2DM)。这有助于解释为什么现在有两个截然不同的市场应用(亚马逊和谷歌)以及人们在现有应用中发现的所有问题。

【讨论】:

【参考方案5】:

请注意,Urban Airship 终止了对 Helium for Google Android 的支持——他们的自定义技术允许将通知推送到 Kindle 和 NOOK 设备(Helium For Google Android Sunset FAQ)。

Here (Google Cloud Messaging Support FAQ)他们确实声明:

“我们计划通过亚马逊的亚马逊设备消息 (ADM) 支持 Kindle 在未来的某个时间点提供服务。”

【讨论】:

【参考方案6】:

我只是在研究亚马逊推广 Kindel 设备的方式。 AWS 服务就是 Simple Queue Service (SQS)。我还没有使用它,但它似乎很好,因为它允许您发送和安排推送消息也为Google Cloud Messaging (GCM) 甚至苹果公司的家伙。

亚马逊调用他的服务Amazon Device Messaging (ADM),在那个页面你可以下载SDK并集成API。

即使这个答案迟了(四年后),我希望这对其他开发人员的研究有所帮助。

【讨论】:

【参考方案7】:

您不能将 C2DM 用于 Kindle。我不知道为什么 Dule 上面的回答说他可以使用 Parse 推送到 Kindle - 他们的服务是 C2DM,并且在他们的文档中没有提到 Kindle 客户端。

Urban Airship 之所以有效,只是因为他们有自己的客户,这很好,但不是标准的。

【讨论】:

Parse 未使用 C2DM,来源:blog.parse.com/2011/07/25/android-push-notifications。 我实际上已经使用 Parse 成功地推送到了 Kindle Fire,所以我可以肯定地确认它有效,并且您关于使用 C2DM 进行 Parse 的信息不正确。你尝试时它不起作用吗?

以上是关于Kindle Fire 的推送通知/C2DM?的主要内容,如果未能解决你的问题,请参考以下文章

android推送通知c2dm

Android (c2dm) 推送通知错误

谷歌啥时候停止支持 c2dm 推送通知?

c2dm android推送通知每天广播量

android c2dm中的推送通知

收到 C2DM 推送通知时更改活动行为