作者:
声明:转发本文,请联系作者授权
MCAdvertiserAssistant.h
MCAdvertiserAssistant : NSObject
NS_CLASS_AVAILABLE(10_10, 7_0)
MCAdvertiserAssistant是一个处理广告的便利类,向用户显示传入的邀请并处理用户的响应。
方法 | 说明 | 备注 | SDK版本 |
---|
- (instancetype)initWithServiceType:(NSString *)serviceType NSString *> *)info session:(MCSession *)session | | | iOS11.4 |
- (void)start | 开启助手 | | iOS11.4 |
- (void)stop | 停止助手 | | iOS11.4 |
* 属 性
属性 | 说明 | 备注 | SDK版本 |
---|
id<MCAdvertiserAssistantDelegate> delegate | | | iOS11.4 |
MCSession *session | | | iOS11.4 |
NSDictionary<NSString *, NSString *> *discoveryInfo | | | iOS11.4 |
NSString *serviceType | | | iOS11.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> delegate | | | iOS11.4 |
MCNearbyServiceBrowser *browser | | | iOS11.4 |
MCSession *session | | | iOS11.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;这种方法是可选的,如果没有实现,每个附近的端都将呈现给用户 | @optional | iOS11.4 |
MCError.h
常量 | 说明 | 备注 | SDK版本 |
---|
MCErrorUnknown | | NS_ENUM_AVAILABLE (10_10, 7_0) | iOS11.4 |
MCErrorNotConnected | | NS_ENUM_AVAILABLE (10_10, 7_0) | iOS11.4 |
MCErrorInvalidParameter | | NS_ENUM_AVAILABLE (10_10, 7_0) | iOS11.4 |
MCErrorUnsupported | | NS_ENUM_AVAILABLE (10_10, 7_0) | iOS11.4 |
MCErrorTimedOut | | NS_ENUM_AVAILABLE (10_10, 7_0) | iOS11.4 |
MCErrorCancelled | | NS_ENUM_AVAILABLE (10_10, 7_0) | iOS11.4 |
MCErrorUnavailable | | NS_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 *)serviceType | | | iOS11.4 |
- (void)startAdvertisingPeer | 开始向附近的浏览对手宣布存在 | | iOS11.4 |
- (void)stopAdvertisingPeer | 停止向附近的浏览对手宣布存在 | | iOS11.4 |
* 属 性
属性 | 说明 | 备注 | SDK版本 |
---|
id<MCNearbyServiceAdvertiserDelegate> delegate | | | iOS11.4 |
MCPeerID *myPeerID | | | iOS11.4 |
NSDictionary<NSString *, NSString *> *discoveryInfo | | | iOS11.4 |
NSString *serviceType | | | iOS11.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 | 由于错误,广告没有开始 | @optional | iOS11.4 |
MCNearbyServiceBrowser.h
MCNearbyServiceBrowser : NSObject
NS_CLASS_AVAILABLE(10_10, 7_0)
MCNearbyServiceBrowser查找附近的端,并将它们连接到会话
方法 | 说明 | 备注 | SDK版本 |
---|
- (instancetype)initWithPeer:(MCPeerID *)myPeerID serviceType:(NSString *)serviceType | | | iOS11.4 |
- (void)startBrowsingForPeers | 开始寻找附近的广告端 | | iOS11.4 |
- (void)stopBrowsingForPeers | 停止寻找附近的广告端 | | iOS11.4 |
MCNearbyServiceBrowserDelegate协议
方法 | 说明 | 备注 | SDK版本 |
---|
- (void)browser:(MCNearbyServiceBrowser *)browser foundPeer:(MCPeerID *)peerID withDiscoveryInfo:(nullable NSDictionary<NSString *, NSString *> * info | | | iOS11.4 |
- (void)browser:(MCNearbyServiceBrowser *)browser lostPeer:(MCPeerID *)peerID | 附近的同伴已停止投放广告 | | iOS11.4 |
- (void)browser:(MCNearbyServiceBrowser *)browser didNotStartBrowsingForPeers:(NSError *)error | 浏览因错误而未启动 | @optional | iOS11.4 |
MCPeerID.h
MCPeerID : NSObject <NSCopying, NSSecureCoding>
NS_CLASS_AVAILABLE(10_10, 7_0)
MCPeerID表示多路径会话中的端
方法 | 说明 | 备注 | SDK版本 |
---|
- (instancetype)initWithDisplayName:(NSString *)myDisplayName | | | iOS11.4 |
* 属 性
属性 | 说明 | 备注 | SDK版本 |
---|
NSString *displayName | | | iOS11.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 |
MCSessionStateConnecting | Peer正在连接到会话 | | iOS11.4 |
MCSessionStateConnected | Peer已连接到会话 | | 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> delegate | | | iOS11.4 |
MCPeerID *myPeerID | | | iOS11.4 |
NSArray *securityIdentity | | | iOS11.4 |
MCEncryptionPreference encryptionPreference | | | iOS11.4 |
NSArray<MCPeerID *> *connectedPeers | | | iOS11.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 | 首先与同行联系,并获得有关的身份信息远程端(证书可能为零) | @optional | iOS11.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 |