【问题标题】:Multipeer connectivity disconnects on background多方连接在后台断开连接
【发布时间】:2014-09-04 22:47:03
【问题描述】:

所以,我的理想方案是我希望我的 MCNearbyServiceAdvertiserMCNearbyServiceBrowser 在后台工作。但是我知道当应用程序退出活动时需要杀死这些,并在我回到前台时恢复工作。

但困扰我的是,当我将两个对等方连接到一个会话并开始在他们之间聊天时,它突然断开连接。含义.. 我的 MCSession 对象在进入后台时断开连接。我还被告知certificateHandler(YES); 的 Apple 错误,我现在明确地调用它。

我想准确地设置 FIRECHAT 是如何做到的。谁能给我一些关于它为什么一直失败的指示,或者你们如何设法保持这种活跃?

谢谢,

【问题讨论】:

  • 你的应用使用什么后台模式?
  • 而你是在应用进入后台时创建后台任务?
  • 嘿,克里斯,后台任务是干什么的?我的意思是广告商和浏览器已经分配初始化并开始扫描和连接。

标签: ios cocoa-touch multipeer-connectivity


【解决方案1】:

为了让您的同伴保持连接,您需要在应用进入后台时启动后台任务,否则 iOS 会断开网络连接并暂停应用。

- (void)applicationDidEnterBackground:(UIApplication *)application {

    //Start a background task to keep the app running in the background
    self.bgTask = [application beginBackgroundTaskWithExpirationHandler:^{

       //If your background task takes too long, this block of code will execute
        [self cleanUp];

        self.bgTask = UIBackgroundTaskInvalid;
    }];

   //Do the work you need to do
   dispatch_async(dispatch_get_main_queue(), ^{

      //Finish up the transfer of data between peers
      [self cleanUp];

      //End the background task so that iOS doesn't kill the app
      [application endBackgroundTask:_bgTask];
    });
}

- (void)applicationWillEnterForeground:(UIApplication *)application {

    [application endBackgroundTask:_bgTask];
}

- (void)cleanUp {

    //Clean up the Multipeer session
}

请注意,这仅适用于应用在前台时已建立的现有连接。进入后台还是要停止浏览和广告。

【讨论】:

  • 在后台浏览和广告的任何方式?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-13
  • 1970-01-01
  • 1970-01-01
  • 2012-03-14
  • 2012-08-07
  • 2019-02-22
  • 2018-07-27
相关资源
最近更新 更多