【问题标题】:Android Push Notifications or a Service?Android 推送通知或服务?
【发布时间】:2015-04-14 14:47:49
【问题描述】:

我有一个在 iPhone 和 Android 设备上运行的应用程序。 我还有一个在客户端之间传输文件和其他数据的服务器。 现在,我的问题是关于 android 客户端的。

目前,我有一个在后台运行的服务,它处理来自服务器的输出和输入,每当从服务器接收到新数据时,客户端都会向用户发出通知。

所以,如果用户进入他的设备设置并强制关闭应用程序,服务将停止运行并且不会收到数据(到服务器的套接字将关闭并且服务器不会向他发送任何数据并将其存储在数据库中,以供用户下次启动应用并连接时使用。

所以这是一种方法,但另一种方法是推送通知,即使包括服务在内的整个应用程序关闭,它也会启动通知。 但缺点是,在我看来,我需要在我的应用程序中使用 3rd 方组件,这增加了复杂性。

我需要帮助来决定是否使用推送通知,以及此功能在其他 Android 应用中的常见程度如何?

【问题讨论】:

    标签: android push-notification


    【解决方案1】:

    据我了解,您的服务始终运行,并且始终连接到您的服务器的套接字连接。这是一个巨大的电池消耗,可能已经给您的应用带来了很多不必要的复杂性。

    您所说的第 3 方组件是 Google Play 服务,它由创建 Android 操作系统(即 Google)的同一个人开发和维护。

    您所说的“额外复杂性”是在AndroidManifest.xml 上添加几个权限和BroadcastReceiver,然后在GCM 网络面板上注册您的应用程序。这里有详细说明https://developer.android.com/google/gcm/client.html

    在许多应用程序中这是非常非常非常非常常见的事情。 Facebook、Facebook messenger、Gmail、带有恶劣天气通知的天气应用程序、WhatsApp、Skype、Twitter,几乎所有带有“最新消息”部分的东西,Foursquare。他们都使用推送通知。

    所以用非常直接的方式回答这个问题:

    • 您绝对应该使用推送通知。

    【讨论】:

    • 维护一个插座是一个巨大的电池消耗?我不这么认为。你能解释一下这个套接字到底消耗了什么吗? read() 是一个阻塞函数, write() 仅在客户端显式发送某些内容时发生,这将消耗与将其写入推送通知服务器相同数量的电池。此外,我注意到如果我强制停止 WhatsApp,并从另一台设备向我发送消息,则不会推送任何通知,所以我认为他们不使用推送通知
    • 消耗是在实际的收音机上保持活动状态(而不是待机甚至睡眠)。我同意你的看法,它与推送通知服务器的消耗相同,除了 GCM 在性能、可靠性和电池消耗方面不断被创建整个操作系统的人改进和改进,并且它在所有其他人之间共享系统上安装的应用程序。想象一下具有 20 个不同连接的 20 个应用程序或 1 个维护 1 个连接并仅在需要时将数据重新分配给 20 个应用程序的集中式资源。
    猜你喜欢
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 2016-11-27
    • 2017-11-18
    • 1970-01-01
    • 2015-08-27
    • 2017-04-08
    • 1970-01-01
    相关资源
    最近更新 更多