安卓聊天服务

5
我正在尝试创建一个类似于 WhatsApp 或 Messenger 的应用程序,以了解学习目的。
基本上,我创建了一个活动,绑定到一个使用 TCP/IP 连接到 Java 服务器的服务。
当服务在运行时,用户可以收发消息。问题是,当用户关闭应用程序(例如使用任务管理器 - 按住 Home 键),如果应用程序关闭,则服务将被杀死,因为它没有任何绑定。
我的问题是:这样的应用程序模式是什么,以便用户始终接收消息,WhatsApp 如何始终保持其服务处于活动状态并发送消息。
谢谢。
3个回答

1

聊天应用程序同时使用套接字连接和GCM / APN。如果应用程序在前台,则建立套接字连接。当应用程序处于后台时,收到GCM消息后,再次建立套接字连接。 通过这种方式,您还可以节省电池电量。长时间保持套接字连接会耗尽设备的电池电量。 有关示例代码,您可以参考我们的Android聊天SDK:

https://github.com/AppLozic/Applozic-Android-SDK

https://github.com/AppLozic/Applozic-iOS-SDK


0

我知道c2dm是一种解决方案,但我读到另一个选项是xmpp。我认为xmpp使用像我的例子中的tpc/ip套接字,那么使用xmpp如何解决服务问题?如果我对xmpp有所误解,请纠正我。谢谢 - Catalin
嘿,我有一个关于保持我的服务活动的问题:https://dev59.com/opPfa4cB1Zd3GeqPGa_J - Ruchir Baronia

0

如果您有后端,则可以查看OneSignal,它完全免费且文档良好:OneSignal

我想您已经了解了推送通知:基本上您不需要一直监听服务器。当推送到来时,云消息平台会为您触发手机。

如果您希望您的服务始终处于打开状态,即使应用程序处于关闭状态,请使用STICKY_SERVICEstart-sticky-and-start-not-sticky

此外,如果您想选择定价计划,请阅读FCMFirebase Cloud Messaging

在此页面中:android-migrate-fcm,您应该看到这个注释:

Firebase Cloud Messaging (FCM) 是 GCM 的新版本。它继承了可靠且可扩展的 GCM 基础设施,同时增加了新功能!请查看常见问题解答以了解更多信息。如果您正在为新应用程序集成消息传递,请从 FCM 开始。强烈建议 GCM 用户升级到 FCM,以便今天和未来受益于新的 FCM 功能。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接