Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
相当于iOS的后台服务_Ios_Swift_Architecture_Socket.io_Background Service - Fatal编程技术网

相当于iOS的后台服务

相当于iOS的后台服务,ios,swift,architecture,socket.io,background-service,Ios,Swift,Architecture,Socket.io,Background Service,我目前正在将安卓应用程序移植到iOS上,但我似乎找不到一个好的安卓后台服务来处理用户请求。 Android应用程序有一个带有Socket.IO对象的后台服务,通过在UI和服务之间来回发送BroadcastReceivers,我也可以处理请求(通过使用EventBus替换BroadcastReceivers,我可以用应用程序在后台所做的更改来更新UI)。在iOS 10之前,建议用户使用voip呼叫来执行此类任务,但后来它被弃用了,取而代之的是pushKit,但它不让应用程序知道推送通知。无论如何,

我目前正在将安卓应用程序移植到iOS上,但我似乎找不到一个好的安卓后台服务来处理用户请求。 Android应用程序有一个带有Socket.IO对象的后台服务,通过在UI和服务之间来回发送BroadcastReceivers,我也可以处理请求(通过使用EventBus替换BroadcastReceivers,我可以用应用程序在后台所做的更改来更新UI)。在iOS 10之前,建议用户使用voip呼叫来执行此类任务,但后来它被弃用了,取而代之的是pushKit,但它不让应用程序知道推送通知。无论如何,我正在寻找一个好的架构来给我这些功能,如果有人有意见,我会非常高兴听到它

  • 它应该能够容纳单个套接字对象并使其保持活动状态 并且可以在后台访问UI元素,而不会阻塞UI
  • 如果应用程序处于运行状态,则某些套接字事件需要有通知 后台如果在前台,则请求用户界面制作一些 变化。(若它可以在应用程序处于后台时在后台更新UI,并向用户提供更新的UI,那个就更好了)
  • 在Socket对象和UI之间发送事件需要非常简单 尽可能地解耦,因为有许多事件具有不同的 财产

iOS的后台模式有限。当您的应用程序位于前台时,您可以将套接字连接到服务器,但如果您的应用程序位于后台,则如果您的应用程序是VoIP应用程序,则应使用静默推送通知或推送套件通知。我不知道你为什么说PushKit不让应用程序知道推送通知;这正是它所做的。我的应用程序像uber一样是一个交通应用程序,但当应用程序在后台并且套接字被断开时,我怎么知道服务器事件呢?此外,当应用程序位于前台时,如何在UI和套接字对象之间连接请求?通常,当应用程序位于后台时,您会使用推送通知通知应用程序。在前台,您只需编写代码。您可以使用委托模式或
NSNotification
。在前台模式下,如何使应用程序中的所有类都可以访问套接字对象和事件?单例类可以做这样的事情吗?如何使它在后台工作并且不阻塞UI线程?您可以使用单例。Alamofire和NSURLConnection等网络库支持委派和异步回调,因此不会阻塞主线程。