gpt4 book ai didi

ios - 通过 BackgroundTask 在后台维护多点连接 session ?

转载 作者:可可西里 更新时间:2023-11-01 04:15:30 33 4
gpt4 key购买 nike

当应用程序暂时进入后台时,我试图维护一个 MultipeerConnectivity“ session ”,所以我考虑过使用后台任务,因为我在这里见过几次......问题是我不知道如何“维护”与 UIBackgroundTask 的 session ,有人可以发布提示

我不关心广告商/浏览器,可以阻止它们,但我希望 session 不会断开连接,因为目前重新连接是 super 错误。

最佳答案

根据苹果文档“如果应用程序进入后台,框架会停止广告和浏览并断开所有打开的 session 。返回前台后,框架会自动恢复广告和浏览,但开发人员必须重新建立任何已关闭的 session "引用:Apple doc

扩展连接的一种方式如下

回答我自己的问题,希望能对遇到同样情况的人有所帮助。对于 iOS 开发新手,“使用后台服务”简单意味着打开目标“功能”选项卡中的“后台模式”选项。仅此一项就应该让您的应用在被杀死之前在后台运行大约 10 分钟。

但是,当应用程序进入后台时,我使用“backgroundTimeRemaining”来了解我还剩多少时间,它只是从 180(以秒为单位,所以 3 分钟)开始,然而,打印循环确实继续工作三分钟过去了,这意味着需要手动编码到达时间时应该发生什么。

对于 Multipeer Connectivity,这足以在应用程序进入后台时保持连接处于事件状态,并且它仍将毫无问题地接收所有消息/流。

为了稳定,我做了如下清理:

在appDelegate.h中

@property (nonatomic) UIBackgroundTaskIdentifier backgroundTask; //declaring a background task

在 appDelegate.m 中

- (void)applicationDidEnterBackground:(UIApplication *)application
{
self.backgroundTask = [application beginBackgroundTaskWithExpirationHandler:^
{
//This is called 3 seconds before the time expires
//Here: Kill the session, advertisers, nil its delegates,
// which should correctly send a disconnect signal to other peers
// it's important if we want to be able to reconnect later,
// as the MC framework is still buggy
[application endBackgroundTask:self.backgroundTask];
self.backgroundTask = UIBackgroundTaskInvalid; //Invalidate the background task
}];
}

- (void)applicationDidBecomeActive:(UIApplication *)application
{
// Here: We should init back the session, start the advertising and set the delegates from scratch
// This should allow the app to reconnect to the same session with more often than not
self.backgroundTask = UIBackgroundTaskInvalid; //Here we invalidate the background task if the timer didn't end already
}

关于ios - 通过 BackgroundTask 在后台维护多点连接 session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25801665/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com