是否有 PeriodicWorkRequest 等同于 iOS 在后台使用?

Is there PeriodicWorkRequest equivalent for iOS to use in background?

我们正在开发 Xamarin.Forms 应用程序。
我们需要做的机制之一是在后台上传一堆图片,如果失败重试直到成功。

对于Android,很简单:

using AndroidX.Work;
...
        PeriodicWorkRequest uploadWorkRequest = PeriodicWorkRequest.Builder.From<UploadWorker>(TimeSpan.FromMinutes(20)).Build();
        WorkManager.Instance.Enqueue(uploadWorkRequest);

哪里

public class UploadWorker : Worker
{
    public UploadWorker(Context context, WorkerParameters workerParameters) : base(context, workerParameters) { }

    public override Result DoWork()
    {
 //do your stuff
    }
}

显然 iOS 不存在这种机制,但是 运行 在后台执行任务并在任务失败时重复的功能应该存在。

iOS是否有等效的 PeriodicWorkRequest?

在iOS中我们可以使用NSTimer来实现一些重复任务。

_timer = NSTimer.CreateRepeatingScheduledTimer(TimeSpan.FromSeconds(20), () =>
{
    this.InvokeOnMainThread(()=>{
        //Your code goes here
    });
}

开始计时

timer.Fire();

停止定时器(离开当前ViewController时调用)

_timer.Invalidate();