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代码产生了巨大的影响。