如何在 Xamarin 上执行简单的后台任务 iOS

How to perform a simple background task on Xamarin iOS

在我们的应用程序中,用户可以跟踪和提交他们记录的旅程。我需要一种在 iOS 中创建任务的简单方法。我已经在 Android 上创建并测试了它。它通过以下方式工作:

简而言之,我怎样才能在 iOS 9-13 日实现这一目标?

我已经尝试使用以下方法创建后台安全任务:

nint taskID = UIApplication.SharedApplication.BeginBackgroundTask( () => {});

但是,这只给任务 运行 2 分钟,这还不够。我查看了 NSURlSessions,但它们需要 URls,而我们使用的是我们自己的 API 包装器。

我只是想要一种在用户点击 'sync' 时创建任务的方法,并且该任务也能够在后台 运行。如果应用程序关闭时任务被取消,我不会太在意,尽管如果可能的话我希望任务继续。

谢谢。

我建议您利用 Shiny 来实现它。

PerformFetch 是最接近您要求的东西,它会在后台 运行 并在 iOS 认为需要时更新您的应用程序(它预测根据用户将很快打开您的应用程序并且新内容可用之前的行为)。

唯一的选择是在您希望更新应用程序时发送推送通知。

就是这样,我理解你的愿望,但这只是 - 一个愿望,而不是真实的东西。

This service will continue to sync journeys even if the app is put into the background or even closed.

首先,如果您的应用 is closed 在 iOS 中,我肯定不能 运行 任何后台服务。

然后,如果您的应用程序 is put into background,Apple 有严格限制允许应用程序 运行 在后台运行。 background-tasks has time limits, you can read the document about more information. There is a section about handling-background-task-time-limits你可以试试。

此外,Apple 允许某些特定的应用程序 运行 在后台运行,这些应用程序必须在后台执行任务。比如需要后台play music,后台update location等的app,可以看到Application Registration Categories here。如果您的应用满足那里的要求,您可以向系统申请后台运行ning权限。

参考:Backgrounding in Xamarin.iOS