gpt4 book ai didi

android - Android 和 iOS 上的 websockets

转载 作者:搜寻专家 更新时间:2023-11-01 06:51:48 24 4
gpt4 key购买 nike

我正在创建一个具有即时消息传递功能的移动应用程序。在我雇人开发移动组件之前,我会想出后端。移动设备(客户端)和服务器之间的主要通信方式是通过 websocket。我听说一旦应用程序不再位于移动设备(android 和 iOS)的前台,websocket 就会关闭。我不想花时间围绕 websockets 开发服务器来意识到我不能使用这项技术为此目的。有人可以帮我解决以下问题吗:

  1. 如果是这种情况(网络套接字在后台关闭),像 bumble 和 what's app 这样的应用程序如何继续显示近期通知?

  2. socket如何在后台继续运行?有没有更好的新技术可以做到这一点?

更新这里的问题是当应用程序不在前台时如何维护持久的 websocket。我想知道更多关于 iOS 和 android 如何处理应用程序最小化时的情况。 websockets 是否继续运行?还是他们关门了?是否必须使用其他库才能使其继续运行?

最佳答案

安卓:

由于 Android 专注于电池的高效使用方式,当应用程序处于后台(依赖)时,系统会剥夺应用程序的资源。最好使用工作管理器来处理您的后台任务。

看看https://developer.android.com/topic/libraries/architecture/workmanager/basics.html

示例代码

class GetMessages(context: Context, params: WorkerParameters) : Worker(context, params) {

override fun doWork(): Result {
getAndSaveMessages()
return Result.success()
}

private fun getAndSaveMessages() {
// get messages here
}
}

将这段代码放在一个单例类中,以便从像 JobManager 一样的任何地方访问它

    object JobManager{
private fun syncMessages(){
val loadMessages = PeriodicWorkRequestBuilder<GetMessages>(5, TimeUnit.MINUTES)
// Add tag to cancel the thread any time
loadMessages.addTag("MESSAGES")

val myConstraints = Constraints.Builder()
.setRequiredNetworkType(NetworkType.CONNECTED)
// Many other constraints are available, see the
// Constraints.Builder reference
.build()
// Add constraints
loadMessages.setConstraints(myConstraints)

WorkManager.getInstance().enqueue(loadMessages.buld())
}

}

现在您可以在任何地方使用JobManager.syncMessages()

关于android - Android 和 iOS 上的 websockets,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56734905/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com