延长xamarin ios的后台时间

3pvhb19x  于 2022-12-27  发布在  iOS
关注(0)|答案(1)|浏览(152)

我尝试在xamarin ios的后台模式下执行一个无限期运行的任务,但是当它被发送到第二个平面时,这个任务只需要30秒就可以杀死应用程序,所以我真的不知道如何延长这个时间来接收这些信息。
这是启动后台任务的方法:

public async void ActivateHeartbeat()
        {
            
           
            await Task.Factory.StartNew(() =>
            {
                taskID = UIApplication.SharedApplication.BeginBackgroundTask(() =>
                {
                    Console.WriteLine("APPLICATION GOT KILLED");
                    UIApplication.SharedApplication.EndBackgroundTask(taskID);
                    

                });

                while (true)
                {

                    Console.WriteLine("Background time remaining: " + UIApplication.SharedApplication.BackgroundTimeRemaining);

                    int sent = SendTCP(data);
                    if (sent > 0) Console.WriteLine("Sent Heartbeat.");
                    Thread.Sleep(10000);

                }

            });

        }

我已经阅读了微软提供的所有文档,但对我没有帮助。我该如何增加后台时间?
当应用程序被推到第二个平面时控制台的结果(最小化iPhone上的应用程序):

Background time remaining: 25.9390514166444
 Sent Heartbeat.
 Background time remaining: 15.8512012083665
 Sent Heartbeat.
 Background time remaining: 5.76157358335331
 Sent Heartbeat.
 APPLICATION GOT KILLED
 APPLICATION GOT KILLED

任何帮助都是受欢迎的。提前谢谢你,劳尔。

y1aodyip

y1aodyip1#

众所周知,苹果对于App占用硬件资源的要求如此严格,更不用说处于后台状态的App了,当App进入后台状态后,很快就会被OS挂起,除非你向OS申请许可。
下图来自XCode功能。这些模式可以在后台模式下运行。

似乎无法在后台模式下直接运行应用。
然而,一些文章通过播放空白视频来延长后台时间,因为音频可以在后台模式下播放。这意味着我们必须在后台任务中播放空白音频。你可以参考Unlimited Backgrounding on iOS。但我不知道苹果是否会批准这款应用在苹果商店。
希望我的回答有道理。

相关问题