我尝试在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
任何帮助都是受欢迎的。提前谢谢你,劳尔。
1条答案
按热度按时间y1aodyip1#
众所周知,苹果对于App占用硬件资源的要求如此严格,更不用说处于后台状态的App了,当App进入后台状态后,很快就会被OS挂起,除非你向OS申请许可。
下图来自XCode功能。这些模式可以在后台模式下运行。
似乎无法在后台模式下直接运行应用。
然而,一些文章通过播放空白视频来延长后台时间,因为音频可以在后台模式下播放。这意味着我们必须在后台任务中播放空白音频。你可以参考Unlimited Backgrounding on iOS。但我不知道苹果是否会批准这款应用在苹果商店。
希望我的回答有道理。