Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.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_Objective C - Fatal编程技术网

iOS多对等连接未收到来自对等方的邀请未收到

iOS多对等连接未收到来自对等方的邀请未收到,ios,objective-c,Ios,Objective C,我知道这个问题已经被问过很多次了,但在每一个问题都读了几遍之后,我仍然无法让我的多eer连接性工作。我正在发送邀请,但没有收到邀请。代码如下: @implementation MPCManager - (id)init { self = [super init]; if (self) { _myPeerID = nil; _session = nil; _browser = nil; _advertiser = nil; } return s

我知道这个问题已经被问过很多次了,但在每一个问题都读了几遍之后,我仍然无法让我的
多eer连接性
工作。我正在发送邀请,但没有收到邀请。代码如下:

@implementation MPCManager

- (id)init {
  self = [super init];

  if (self) {
    _myPeerID = nil;
    _session = nil;
    _browser = nil;
    _advertiser = nil;
  }

  return self;
}

- (void)automaticBrowseAndAdvertiseWithName:(NSString *)displayName {
  _myPeerID = [[MCPeerID alloc] initWithDisplayName:displayName];
  _session = [[MCSession alloc] initWithPeer:_myPeerID];
  _session.delegate = self;

  _advertiser = [[MCNearbyServiceAdvertiser alloc] initWithPeer:_myPeerID
                                                  discoveryInfo:nil
                                                    serviceType:@"trm-s"];
  _advertiser.delegate = self;
  [_advertiser startAdvertisingPeer];

  _browser = [[MCNearbyServiceBrowser alloc] initWithPeer:_myPeerID
                                              serviceType:@"trm-s"];
  _browser.delegate = self;
  [_browser startBrowsingForPeers];
}

- (void)session:(MCSession *)session
    didReceiveCertificate:(NSArray *)certificate
                 fromPeer:(MCPeerID *)peerID
       certificateHandler:(void (^)(BOOL accept))certificateHandler {
  certificateHandler(YES);
}

- (void)advertiser:(MCNearbyServiceAdvertiser *)advertiser
    didReceiveInvitationFromPeer:(MCPeerID *)peerID
                     withContext:(NSData *)context
               invitationHandler:(void (^)(BOOL,
                                           MCSession *))invitationHandler {
  NSLog(@"This is NOT getting called");
}

- (void)browser:(MCNearbyServiceBrowser *)browser
    didNotStartBrowsingForPeers:(NSError *)error {
  NSLog(@"%@", [error localizedDescription]);
}
- (void)browser:(MCNearbyServiceBrowser *)browser
            foundPeer:(MCPeerID *)peerID
    withDiscoveryInfo:(NSDictionary *)info {
  NSLog(@"This IS getting called");
}

- (void)invitePeer:(MCPeerID *)peerID {
  NSLog(@"This IS getting called");
  [_browser invitePeer:peerID toSession:_session withContext:nil timeout:30];
}

我在两个模拟器上运行它,它工作了一段时间,但突然停止了。关于如何或在何处查找问题,您有什么想法吗?

请确保尽可能地序列化和重用mcpeirid对象。每次调用
-(instancetype)initWithDisplayName:(NSString*)myDisplayName
时,它都会返回一个唯一的实例

在开发环境中经常发生的事情是,您最终会遇到大量的广告商和浏览器,在Bonjour广告空间中会出现大量的重影。这会导致一切都变得不稳定

如果您正在使用模拟器,则重置它们可能会有所帮助。在硬件上,您可以重新启动或切换飞行模式


看看名为“跨平台近距离联网”的Multipeer。它有一些很好的最佳实践可供遵循,这将非常有帮助。

请确保尽可能序列化和重用mcpherid对象。每次调用
-(instancetype)initWithDisplayName:(NSString*)myDisplayName
时,它都会返回一个唯一的实例

在开发环境中经常发生的事情是,您最终会遇到大量的广告商和浏览器,在Bonjour广告空间中会出现大量的重影。这会导致一切都变得不稳定

如果您正在使用模拟器,则重置它们可能会有所帮助。在硬件上,您可以重新启动或切换飞行模式


看看名为“跨平台近距离联网”的Multipeer。它有一些很好的最佳实践可供遵循,这将非常有帮助。

请确保尽可能序列化和重用mcpherid对象。每次调用
-(instancetype)initWithDisplayName:(NSString*)myDisplayName
时,它都会返回一个唯一的实例

在开发环境中经常发生的事情是,您最终会遇到大量的广告商和浏览器,在Bonjour广告空间中会出现大量的重影。这会导致一切都变得不稳定

如果您正在使用模拟器,则重置它们可能会有所帮助。在硬件上,您可以重新启动或切换飞行模式


看看名为“跨平台近距离联网”的Multipeer。它有一些很好的最佳实践可供遵循,这将非常有帮助。

请确保尽可能序列化和重用mcpherid对象。每次调用
-(instancetype)initWithDisplayName:(NSString*)myDisplayName
时,它都会返回一个唯一的实例

在开发环境中经常发生的事情是,您最终会遇到大量的广告商和浏览器,在Bonjour广告空间中会出现大量的重影。这会导致一切都变得不稳定

如果您正在使用模拟器,则重置它们可能会有所帮助。在硬件上,您可以重新启动或切换飞行模式


看看名为“跨平台近距离联网”的Multipeer。它有一些很好的最佳实践可以遵循,这将非常有帮助。

您在这里使用的是哪种操作系统和版本?我发现的一件事是,如果设备名称没有更改,您应该序列化mcpherid对象并重用它们。否则,浏览过程可能会被重复项污染。如果你在真正的硬件上运行它,这能工作吗?我制作/清理我的项目并用iOS模拟器重置模拟器/重置内容和设置。。。它又起作用了,所以我猜问题就是你提到的那个。你能把它转换成答案吗,这样我就可以接受了?我补充了我的答案。我链接的会话中有用于处理MCPEIRID对象序列化的代码。仅这一个技巧就让我的multipeer代码发生了巨大的变化。您使用的是哪个操作系统和版本?我发现的一件事是,如果设备名称没有更改,您应该序列化mcpherid对象并重用它们。否则,浏览过程可能会被重复项污染。如果你在真正的硬件上运行它,这能工作吗?我制作/清理我的项目并用iOS模拟器重置模拟器/重置内容和设置。。。它又起作用了,所以我猜问题就是你提到的那个。你能把它转换成答案吗,这样我就可以接受了?我补充了我的答案。我链接的会话中有用于处理MCPEIRID对象序列化的代码。仅这一个技巧就让我的multipeer代码发生了巨大的变化。您使用的是哪个操作系统和版本?我发现的一件事是,如果设备名称没有更改,您应该序列化mcpherid对象并重用它们。否则,浏览过程可能会被重复项污染。如果你在真正的硬件上运行它,这能工作吗?我制作/清理我的项目并用iOS模拟器重置模拟器/重置内容和设置。。。它又起作用了,所以我猜问题就是你提到的那个。你能把它转换成答案吗,这样我就可以接受了?我补充了我的答案。我链接的会话中有用于处理MCPEIRID对象序列化的代码。仅这一个技巧就让我的multipeer代码发生了巨大的变化。您使用的是哪个操作系统和版本?我发现的一件事是,如果设备名称没有更改,您应该序列化mcpherid对象并重用它们。否则,浏览过程可能会被重复项污染。如果你在真正的硬件上运行它,这能工作吗?我制作/清理我的项目并用iOS模拟器重置模拟器/重置内容和设置。。。它又起作用了,所以我猜问题就是你提到的那个。你能把它转换成答案吗,这样我就可以接受了?我补充了我的答案。我链接的会话中有用于处理MCPEIRID对象序列化的代码。仅这一个技巧就对我的多个EER代码产生了巨大的影响。