MultipeerConnectivity中文文档

这篇文档详细介绍了iOS的MultipeerConnectivity框架,包括MCAdvertiserAssistant、MCNearbyServiceAdvertiser、MCNearbyServiceBrowser和MCSession等核心类的使用,以及MCSession的自定义发现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

作者:
声明:转发本文,请联系作者授权

MCAdvertiserAssistant.h


MCAdvertiserAssistant : NSObject NS_CLASS_AVAILABLE(10_10, 7_0)

MCAdvertiserAssistant是一个处理广告的便利类,向用户显示传入的邀请并处理用户的响应。

  • 方 法
方法说明备注SDK版本
- (instancetype)initWithServiceType:(NSString *)serviceType NSString *> *)info session:(MCSession *)sessioniOS11.4
- (void)start开启助手iOS11.4
- (void)stop停止助手iOS11.4

* 属 性

属性说明备注SDK版本
id<MCAdvertiserAssistantDelegate> delegateiOS11.4
MCSession *sessioniOS11.4
NSDictionary<NSString *, NSString *> *discoveryInfoiOS11.4
NSString *serviceTypeiOS11.4

MCAdvertiserAssistantDelegate协议

  • 协 议

方法说明备注SDK版本
- (void)advertiserAssistantWillPresentInvitation:(MCAdvertiserAssistant *)advertiserAssistant邀请将呈现给用户iOS11.4
- (void)advertiserAssistantDidDismissInvitation:(MCAdvertiserAssistant *)advertiserAssistant邀请被从屏幕上删除iOS11.4

MCBrowserViewController : UIViewController NS_CLASS_AVAILABLE(10_10, 7_0)

MCBrowserViewController类管理系统提供的用户,用于选择要与多路径会话连接端的接口

  • 方 法
方法说明备注SDK版本
- (instancetype)initWithServiceType:(NSString *)serviceType session:(MCSession *)session使用服务类型和会话创建浏览器视图控制器iOS11.4
- (instancetype)initWithBrowser:(MCNearbyServiceBrowser *)browser session:(MCSession *)session使用编程浏览器和会话创建浏览器视图控制器iOS11.4

* 属 性

属性说明备注SDK版本
id<MCBrowserViewControllerDelegate> delegateiOS11.4
MCNearbyServiceBrowser *browseriOS11.4
MCSession *sessioniOS11.4
NSUInteger minimumNumberOfPeers会话应该期望的最小端数量iOS11.4
NSUInteger maximumNumberOfPeers会话应该期望的最大端数量iOS11.4

* 协 议

方法说明备注SDK版本
- (void)browserViewControllerDidFinish:(MCBrowserViewController *)browserViewController当用户点击完成按钮时,通知代表iOS11.4
- (void)browserViewControllerWasCancelled:(MCBrowserViewController *)browserViewController通知代理用户点击取消按钮iOS11.4
- (BOOL)browserViewController:(MCBrowserViewController *)browserViewController shouldPresentNearbyPeer:(MCPeerID *)peerID withDiscoveryInfo:(nullable NSDictionary<NSString *, NSString *> *)info通知代理人找到了端; discoveryInfo可用于确定是否应将端呈现给用户,如果应呈现端,则委托应返回YES;这种方法是可选的,如果没有实现,每个附近的端都将呈现给用户@optionaliOS11.4

MCError.h

  • 枚 举

常量说明备注SDK版本
MCErrorUnknownNS_ENUM_AVAILABLE (10_10, 7_0)iOS11.4
MCErrorNotConnectedNS_ENUM_AVAILABLE (10_10, 7_0)iOS11.4
MCErrorInvalidParameterNS_ENUM_AVAILABLE (10_10, 7_0)iOS11.4
MCErrorUnsupportedNS_ENUM_AVAILABLE (10_10, 7_0)iOS11.4
MCErrorTimedOutNS_ENUM_AVAILABLE (10_10, 7_0)iOS11.4
MCErrorCancelledNS_ENUM_AVAILABLE (10_10, 7_0)iOS11.4
MCErrorUnavailableNS_ENUM_AVAILABLE (10_10, 7_0)iOS11.4

MCNearbyServiceAdvertiser.h

MCNearbyServiceAdvertiser : NSObject NS_CLASS_AVAILABLE(10_10, 7_0)

MCNearbyServiceAdvertiser宣传本地端的可用性,并处理来自附近同行的邀请

  • 方 法
方法说明备注SDK版本
- (instancetype)initWithPeer:(MCPeerID *)myPeerID discoveryInfo:(nullable NSDictionary<NSString *, NSString *> *)info serviceType:(NSString *)serviceTypeiOS11.4
- (void)startAdvertisingPeer开始向附近的浏览对手宣布存在iOS11.4
- (void)stopAdvertisingPeer停止向附近的浏览对手宣布存在iOS11.4

* 属 性

属性说明备注SDK版本
id<MCNearbyServiceAdvertiserDelegate> delegateiOS11.4
MCPeerID *myPeerIDiOS11.4
NSDictionary<NSString *, NSString *> *discoveryInfoiOS11.4
NSString *serviceTypeiOS11.4

MCNearbyServiceAdvertiserDelegate协议

  • 协 议

方法说明备注SDK版本
- (void)advertiser:(MCNearbyServiceAdvertiser *)advertiser didReceiveInvitationFromPeer:(MCPeerID *)peerID withContext:(nullable NSData *)context invitationHandler:(void (^)(BOOL accept, MCSession * __nullable session))invitationHandler来电邀请请求。使用YES调用invitationHandler回调以及将邀请端连接到会话的有效会话iOS11.4
- (void)advertiser:(MCNearbyServiceAdvertiser *)advertiser didNotStartAdvertisingPeer:(NSError *)error由于错误,广告没有开始@optionaliOS11.4

MCNearbyServiceBrowser.h

MCNearbyServiceBrowser : NSObject NS_CLASS_AVAILABLE(10_10, 7_0)

MCNearbyServiceBrowser查找附近的端,并将它们连接到会话

  • 方 法
方法说明备注SDK版本
- (instancetype)initWithPeer:(MCPeerID *)myPeerID serviceType:(NSString *)serviceTypeiOS11.4
- (void)startBrowsingForPeers开始寻找附近的广告端iOS11.4
- (void)stopBrowsingForPeers停止寻找附近的广告端iOS11.4

MCNearbyServiceBrowserDelegate协议

  • 协 议

方法说明备注SDK版本
- (void)browser:(MCNearbyServiceBrowser *)browser foundPeer:(MCPeerID *)peerID withDiscoveryInfo:(nullable NSDictionary<NSString *, NSString *> * infoiOS11.4
- (void)browser:(MCNearbyServiceBrowser *)browser lostPeer:(MCPeerID *)peerID附近的同伴已停止投放广告iOS11.4
- (void)browser:(MCNearbyServiceBrowser *)browser didNotStartBrowsingForPeers:(NSError *)error浏览因错误而未启动@optionaliOS11.4

MCPeerID.h

MCPeerID : NSObject <NSCopying, NSSecureCoding> NS_CLASS_AVAILABLE(10_10, 7_0)

MCPeerID表示多路径会话中的端

  • 方 法
方法说明备注SDK版本
- (instancetype)initWithDisplayName:(NSString *)myDisplayNameiOS11.4

* 属 性

属性说明备注SDK版本
NSString *displayNameiOS11.4

MCSession.h

MCSession发送模式 NS_CLASS_AVAILABLE(10_10, 7_0)

常量说明备注SDK版本
MCSessionSendDataReliable保证可靠和有序交付iOS11.4
MCSessionSendDataUnreliable立即发送,无需排队,无保证交付iOS11.4

端状态 NS_CLASS_AVAILABLE(10_10, 7_0)

常量说明备注SDK版本
MCSessionStateNotConnected未连接到会话iOS11.4
MCSessionStateConnectingPeer正在连接到会话iOS11.4
MCSessionStateConnectedPeer已连接到会话iOS11.4

加密首选项 NS_CLASS_AVAILABLE(10_10, 7_0)

常量说明备注SDK版本
MCEncryptionOptional会话更喜欢加密,但会接受未加密的连接iOS11.4
MCEncryptionRequired会话需要加密iOS11.4
MCEncryptionNone会话不加密iOS11.4

常量说明备注SDK版本
kMCSessionMinimumNumberOfPeers会话中的最小对端数量NS_CLASS_AVAILABLE(10_10, 7_0)iOS11.4
kMCSessionMaximumNumberOfPeers会话中的最大对端数量NS_CLASS_AVAILABLE(10_10, 7_0)iOS11.4

MCSession : NSObject NS_CLASS_AVAILABLE(10_10, 7_0)

MCSession促进多路径中所有端体之间的通信会话

  • 方 法
方法说明备注SDK版本
- (instancetype)initWithPeer:(MCPeerID *)myPeerID使用本地端的MCPeerID创建会话iOS11.4
- (instancetype)initWithPeer:(MCPeerID *)myPeerID securityIdentity:(nullable NSArray *)identity encryptionPreference:(MCEncryptionPreference)encryptionPreference使用安全配置创建会话。 securityIdentity参数是一个数组 [SecIdentityRef,[零个或多个额外证书]]iOS11.4
- (BOOL)sendData:(NSData *)data toPeers:(NSArray<MCPeerID *> *)peerIDs withMode:(MCSessionSendDataMode)mode error:(NSError * __nullable * __nullable)error将数据消息发送到目标端列表iOS11.4
- (void)disconnect断开会话连接iOS11.4
- (nullable NSProgress *)sendResourceAtURL:(NSURL *)resourceURL withName:(NSString *)resourceName toPeer:(MCPeerID *)peerID withCompletionHandler:(nullable void (^)(NSError * __nullable error))completionHandler将NSURL引用的资源发送给远程端iOS11.4
- (nullable NSOutputStream *)startStreamWithName:(NSString *)streamName toPeer:(MCPeerID *)peerID error:(NSError * __nullable * __nullable)error使用远程端启动命名字节流。iOS11.4

* 属 性

属性说明备注SDK版本
id<MCSessionDelegate> delegateiOS11.4
MCPeerID *myPeerIDiOS11.4
NSArray *securityIdentityiOS11.4
MCEncryptionPreference encryptionPreferenceiOS11.4
NSArray<MCPeerID *> *connectedPeersiOS11.4

MCSessionDelegate协议

  • 协 议
方法说明备注SDK版本
- (void)session:(MCSession *)session peer:(MCPeerID *)peerID didChangeState:(MCSessionState)state远程端改变状态iOS11.4
- (void)session:(MCSession *)session didReceiveData:(NSData *)data fromPeer:(MCPeerID *)peerID从远程端接收到的数据iOS11.4
- (void)session:(MCSession *)session didReceiveStream:(NSInputStream *)stream withName:(NSString *)streamName fromPeer:(MCPeerID *)peerID从远程端收到一个字节流iOS11.4
- (void)session:(MCSession *)session didStartReceivingResourceWithName:(NSString *)resourceName fromPeer:(MCPeerID *)peerID withProgress:(NSProgress *)progress开始从远程端接收资源iOS11.4
- (void)session:(MCSession *)session didFinishReceivingResourceWithName:(NSString *)resourceName fromPeer:(MCPeerID *)peerID atURL:(nullable NSURL *)localURL withError:(nullable NSError *)error从远程端接收数据完毕iOS11.4
- (void)session:(MCSession *)session didReceiveCertificate:(nullable NSArray *)certificate fromPeer:(MCPeerID *)peerID certificateHandler:(void (^)(BOOL accept))certificateHandler首先与同行联系,并获得有关的身份信息远程端(证书可能为零)@optionaliOS11.4

MCSession (MCSessionCustomDiscovery)

如果开发者编写自己的发现代码(直接用NetService,或Bonjour C API)。而不是使用MCNearbyServiceAdvertiser/Browser或MCBrowserViewController,一个可以添加一个远程端到一个MCSeesion通过下列步骤:
1. 使用远程端交换MCPeerID。通过使用NXKeyedArchiver序列化MCPeerID对象,和远程端交换数据,用NSKeyedUnarchiver重建远程MCPeerID对象。
2. 使用远程端交换连接数据。通过调用会话的-nearbyConnectionDataForPeer:completionHandler:方法开始,并发送连接数据到远程端,一旦completionHander被调用。
3. 当远程端连接数据被接收,调用会话的-connectPeer:withNearbyConnectionData: 方法来添加远程端到会话。

  • 方 法
方法说明备注SDK版本
- (void)nearbyConnectionDataForPeer:(MCPeerID *)peerID withCompletionHandler:(void (^)(NSData * __nullable= connectionData, NSError * __nullable error completionHandler获取远程端的连接数据iOS11.4
- (void)connectPeer:(MCPeerID *)peerID withNearbyConnectionData:(NSData *)data收到连接数据后,将端连接到会话iOS11.4
- (void)cancelConnectPeer:(MCPeerID *)peerID取消与端的连接尝试iOS11.4
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值