Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/99.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 与一台设备的多点连接,该设备的应用程序在后台运行_Ios_Multipeer Connectivity - Fatal编程技术网

Ios 与一台设备的多点连接,该设备的应用程序在后台运行

Ios 与一台设备的多点连接,该设备的应用程序在后台运行,ios,multipeer-connectivity,Ios,Multipeer Connectivity,我想使用multipeer连接框架连接两台设备,其中一台设备在后台运行应用程序,就像Firechat一样。我无法确认这是否有效,我已经将其安装在iPhone 5S和4上,但它们只是找不到对方——但我在某个地方读到了这一点 实现这一目标的最佳方式是什么 我使用示例代码中的以下两种方法: -(void)setupPeerAndSessionWithDisplayName:(NSString *)displayName{ _peerID = [[MCPeerID alloc] initWith

我想使用multipeer连接框架连接两台设备,其中一台设备在后台运行应用程序,就像Firechat一样。我无法确认这是否有效,我已经将其安装在iPhone 5S和4上,但它们只是找不到对方——但我在某个地方读到了这一点

实现这一目标的最佳方式是什么

我使用示例代码中的以下两种方法:

-(void)setupPeerAndSessionWithDisplayName:(NSString *)displayName{
    _peerID = [[MCPeerID alloc] initWithDisplayName:displayName];

    _session = [[MCSession alloc] initWithPeer:_peerID];
    _session.delegate = self;
}


-(void)setupMCBrowser{
    _browser = [[MCBrowserViewController alloc] initWithServiceType:@"chat-files" session:_session];
}


-(void)advertiseSelf:(BOOL)shouldAdvertise{
    if (shouldAdvertise) {
        _advertiser = [[MCAdvertiserAssistant alloc] initWithServiceType:@"chat-files"
                                                           discoveryInfo:nil
                                                                 session:_session];
        [_advertiser start];
    }
    else{
        [_advertiser stop];
        _advertiser = nil;
    }
}
当我在前台运行应用程序时,它会完美地找到另一台设备,并进行连接。但如果我将其中一个应用程序放到后台,后台应用程序设备将不再可见

我已经读过了:-但我不能相信没有任何解决办法这是不可能的

仅供参考,我的应用程序也在使用背景位置更新,如果相关的话

谢谢

编辑:
还有其他方法吗??基本上,我只想向另一台设备发送一条消息,发送给正在后台运行应用程序的设备-由于多eer连接在后台不起作用,我可以直接通过蓝牙连接吗?例如,苹果公司已确认多eer连接在后台不起作用。原因是,如果你的应用程序被挂起,那么它的套接字资源可以被回收,一切都会崩溃

但是,可以在后台监视iBeacons。基本上,您将应用程序设置为监视与具有特定id的信标的接近程度。然后,位于前台的应用程序将成为具有相同id的信标。这将导致在后台对应用程序调用以下应用程序委派方法:

- (void)locationManager:(CLLocationManager *)manager didDetermineState:(CLRegionState)state forRegion:(CLRegion *)region {
    UILocalNotification *notification = [[UILocalNotification alloc] init];

    if(state == CLRegionStateInside) {
        notification.alertBody = NSLocalizedString(@"A nearby app would like to connect", @"");
    } else {
        return;
    }
    [[UIApplication sharedApplication] presentLocalNotificationNow:notification];
}

在这里,您会发出一个本地通知,当用户点击时,该通知会将您的应用程序带到前台,此时您可以开始为点对点连接做广告。

另请参阅。这似乎是不可能的,但我会提出一个增强请求。本文说:Multipeer连接框架是线程安全的,应用程序甚至可以在后台创建和维护连接。。。你提到的代理方法一被调用就可以开始广告吗?该应用程序只在进入地区后立即启动,不可能在那里开始广告。我的经验是,任何点对点连接都会在应用程序被备份后的5秒内中断,这一点已经得到了苹果公司这一领域专家的证实。正如你在问题中所说的,你的经验也是,不能在后台建立联系。是的,这就是我害怕的。但是Firechat是如何处理这一切的呢?在两台设备上关闭应用程序一小时后,当我在其中一台设备上打开应用程序时,我仍然可以向另一台设备发送消息。他们可能是通过核心蓝牙发送消息,因为当我打开“设置”应用程序时,我可以看到设备是通过蓝牙连接的。@Keithcougtrey如果我们使用声明我们的应用程序使用核心位置并需要在后台处于活动状态的技巧,会怎么样?