Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.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
使用Xamarin.iOS(C#)在iOS中进行后台处理:我应该使用哪种方法?_C#_Ios_Push Notification_Xamarin.ios_Background Process - Fatal编程技术网

使用Xamarin.iOS(C#)在iOS中进行后台处理:我应该使用哪种方法?

使用Xamarin.iOS(C#)在iOS中进行后台处理:我应该使用哪种方法?,c#,ios,push-notification,xamarin.ios,background-process,C#,Ios,Push Notification,Xamarin.ios,Background Process,我在iOS上遇到了一些背景问题。首先,让我简单解释一下: 我在一家工作管理公司工作,该公司可以接收和分发查找公用设施的票证。用户可以从我们的服务器下载票证,对其进行处理,并将其响应发送回我们的服务器。下载的票据进入本地SQLite数据库,用户做出的响应存储在另一个本地SQLite数据库中。我的同事用C#在Xamarin中编写了Android应用程序,他下载门票和上传回复的智能过程如下: 将票证从服务器下载到本地SQLite数据库“票证” 检查本地“responses”SQLite数据库,查看是否

我在iOS上遇到了一些背景问题。首先,让我简单解释一下:

我在一家工作管理公司工作,该公司可以接收和分发查找公用设施的票证。用户可以从我们的服务器下载票证,对其进行处理,并将其响应发送回我们的服务器。下载的票据进入本地SQLite数据库,用户做出的响应存储在另一个本地SQLite数据库中。我的同事用C#在Xamarin中编写了Android应用程序,他下载门票和上传回复的智能过程如下:

  • 将票证从服务器下载到本地SQLite数据库“票证”
  • 检查本地“responses”SQLite数据库,查看是否有响应
  • 如果有响应,请将它们发送到我们的服务器
  • 等5分钟
  • 重复
  • 这允许用户最初下载一批票据并着手处理它们。如果在用户没有internet的情况下运行此进程,则不会发生任何事情,并且计时器将重置。这个过程将允许用户在没有互联网的情况下对票证做出响应,并在有互联网的情况下上传响应/下载新票证

    我的问题是,在iOS上,背景设置比安卓要严格得多。有后台获取,然后有推送通知。通过后台提取,系统“计算最佳时机”,在该时机运行
    PerformFetch
    方法,并且不会给我必要的5分钟计时器。对于推送通知,如果用户没有internet,则他们将永远不会收到推送通知

    我真的很希望能够像上面描述的那样简单地设置一个5分钟的计时器,并运行该过程,检查是否有新的票证,如果有任何新的票证,则发送任何新的响应。但我不能这样做,因为iOS中背景的限制性本质

    有什么建议吗?他们会非常感激的


    谢谢。

    确实,你不能在像Android这样的iOS应用程序中创建后台服务。但在阅读了您的需求之后,似乎您并不真的需要所有任务的后台服务-您只需要在用户离线更新数据并关闭应用程序时才需要它-当互联网连接再次可用时,再也不要打开。但这是对iOS的限制,在iOS中无论如何都无法实现

    对于其他任务,当应用程序处于活动状态时,您可以从服务器异步获取数据

    你可以简单地创建5分钟的计时器-只有当你的应用程序处于活动状态时才会运行。在那个时,您可以执行代码来获取新票证,并以异步模式向服务器发送响应

    此进程作为其异步进程,不会干扰常规UI活动。用户可以随时检查数据库中的新票证、更新数据库中的响应等,只要它具有internet连接