MultipeerConnectivity中文文档

iOS开发MultipeerConnectivity(多点连接) MultipeerConnectivityiOS7中,引入了一个全新的框架——Multipeer Connectivity。 利用Multipeer Connectivity框架,即使在没有连接到WiFi(WLAN)或移动网络(xG)的情况下,距离较近的Apple设备(iMac/iPad/iPhone)之间可基于蓝牙和WiFi(P2P WiFi)技术进行发现和连接实现近场通信。 阅读详情

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

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
利用MultipeerConnectivity和Swift实现高效多设备通信 本文还有配套的精品资源,点击获取 简介:在移动和桌面应用开发中,设备间实时数据共享和协作越来越重要。MultipeerConnectivity框架允许iOS、macOS和tvOS设备通过Wi-Fi或蓝牙建立连接,进行数据传输。MultipeerKit项目在此基础上通过Swift的编码协议,增加了对自定义类型数据传输的支持,提高了数据传输的效率和便捷性。它还具有跨平台兼容性,... 阅读详情

相关推荐

AirDrop:swift 使用MultipeerConnectivity框架实现附近iOS设备间的近距离数据传输

AirDrop swift 使用MultipeerConnectivity框架实现附近iOS设备间的近距离数据传输 优点:传输数据快,适合大量数据的传输 demo界面如下:

关于MultipeerConnectivity

点对点连接 Peer-to-Peer Connectivity 可以看成是AirDrop不能直接使用的补偿,代价是需要自己实现。MultipeerConnectivity框架可以用来发现和连接附近的设备,并传输数据,而这一切并不需要有网络连接。可以看到Apple逐渐在文件共享方面一步步放开限制,但是当然所有这些都还是被限制在sandbox里的。

ralbatr的专栏 3380

MultipeerConnectivityDemo

MultipeerConnectivity蓝牙开发的demo,用新建房间 和 加入房间的概念来显示。利于刚入门的人可以快速理解MultipeerConnectivity的概念

MultipeerConnectivity(简介)

MultipeerConnectivity支持点对点连接和发现附近的设备。当无法连接互联网时,MultipeerConnectivity也能帮助我们在相近的设备间传输数据,如消息、流数据或文件。

路漫漫其修远兮,吾将上下而求索! 1087

推荐文章:利用MultipeerConnectivity实现设备间文件传输——MultipeerDemo

推荐文章:利用MultipeerConnectivity实现设备间文件传输——MultipeerDemo 1. 项目介绍 MultipeerDemo是一个开源的示例应用,它展示了如何使用Apple的MultipeerConnectivity框架在两台设备之间进行文件传输。这个项目旨在为开发者提供一个直观的教学平台,理解并掌握多设备间的无线通信技术。 2. 项目技术分析 MultipeerDemo的...

gitblog_00095的博客 424

iOS swift 类似AirDrop的近场数据传输 MultipeerConnectivity 框架

insidegui/MultipeerDemo – githubinsidegui/MultipeerKit – github

baidu_40537062的博客 2053

Android官方开发文档Training系列课程中文版:连接无线设备之通过WIFI创建P2P连接...

原文地址:http://android.xsoftlab.net/training/connect-devices-wirelessly/wifi-direct.html#permissions Wi-Fi peer-to-peer (P2P) APIs可以使程序与附近的设备进行直接通讯,Android的Wi-Fi P2P框架由Wi-...

weixin_34166472的博客 177

MultipeerConnectivity应用-点对点连接

概况MultipeerConnectivityiOS7新出现的。MultipeerConnectivity可以通过 Wi-Fi 网络, 点对点的Wifi,蓝牙来近距离传输数据(这些数据可以 是 message-based,streaming data And resources (such as files))。介绍MCAdvertiserAssistant //可以接收,并处理用户请求连接的

yanyanforest的专栏 1939

iOS开发--通过MultipeerConnectivity完成蓝牙通讯

iOS开发–通过MultipeerConnectivity完成蓝牙通讯 iOS蓝牙通讯的三种方式: GameKit.framework:iOS7之前的蓝牙通讯框架,从iOS7开始过期,但是目前已经被淘汰。(不做介绍) MultipeerConnectivity.framework:iOS7开始引入的新的蓝牙通讯开发框架,用于取代GameKit。(详细介绍) CoreB...

weixin_30478619的博客 306

手机端对端直连技术

最近在看AR相关的东西, 其中一个ARWorldMap使用到的Multipeer的技术感觉棒极了。简单就是说, 不需要通过远程的服务器,只在局域网内通过wifi、蓝牙建立起来的通信,有点类似于Apple设备上的AirDrop。尽管对目前强连接的网络游戏环境格格不入(特别是5G大环境下),不过在我看来,对于实时的每帧更新的大批量数据、多用户连接的通信场景,直连技术对缓解服务器压力有不可替代的作用。...

yunman2012的博客 1359

swift-演示如何使用MultipeerConnectivity在两台设备之间隔空传输文件的示例应用

演示如何使用MultipeerConnectivity在两台设备之间隔空传输文件的示例应用

iOS 局域网通讯 MultipeerConnectivity

iOS 局域网传输 MultipeerConnectivity 简单使用 问题 最近想做一个小游戏demo,需要这个功能:两台设备使用本地局域网进行游戏。 于是查找到iOS实现局域网的API,最终决定用MultipeerConnectivity实现该功能 解决 根据自己使用的效果,简单进行了封装,可以借鉴 ......

这个我知道诶的博客 2047

SwiftUI MultipeerConnectivity 基础教程

MultipeerConnectivity 支持对等连接和附近设备的发现。 教程 Multipeer Connectivity框架支持发现附近设备提供的服务,并支持通过基于消息的数据,流数据和资源(例如文件)与这些服务进行通信。 在iOS中,该框架使用基础结构Wi-Fi网络,对等Wi-Fi和蓝牙个人局域网进行基础传输。 在macOS和tvOS中,它使用基础结构Wi-Fi,对等Wi-Fi和以太网。 ...

iCloudEnd的博客 565

多设备通信利器——MultiPeer:打破界限,共享未来!

多设备通信利器——MultiPeer:打破界限,共享未来! 在数字时代,即时、高效的跨设备数据传输已经成为日常需求。今天,我们为您带来一款强大的开源工具——MultiPeer,它为苹果生态系统中的设备提供了一个简洁的解决方案,让离线数据传输变得前所未有的简单和高效。 项目介绍 MultiPeer是基于Apple的MultipeerConnectivity框架构建的一个封装库,旨在简化iOS、mac...

gitblog_01110的博客 535

Multipeer Connectivity.Framwork实战

[声明:本文为转载] Multipeer Connectivity Framework 是iOS 7 推出的众多新框架的一种,它拓宽了操作系统中应用的范围。其目的是使开发者可以创建通过Wi-Fi或蓝牙在近距离建立连接的应用。是在近距离设备间建立互动,交换数据和其他资源的很好的简单工具。 继续我们的介绍,在看到例子之前我们有必要讨论一下Multipeer Connecti

FengziTianYu的专栏 888

MultipeerConnectivity.framework框架

Multipeer Connectivity框架扩充的功能与利用AirDrop传输文件非常类似,可以将其看作AirDrop不能直接使用的补偿,代价是需要自己实现。 FireChat和See You Around等近场聊天App和交互拍照神器拍咯App都是基于Multipeer Connectivity框架实现。 另外,本文对MC可能存在的MitM攻击风险也有所提及。

曾梦想仗剑走天涯 1万+

蓝牙,WiFi(三)

MultipeerConnectivity拓展,可自动搜索附近蓝牙服务,并进行连接断开等,亦可自定义连接蓝牙的UI界面

赵宏的博客 462

多点互联(MultiPeer)项目安装与使用指南

多点互联(MultiPeer)项目安装与使用指南 一、项目目录结构及介绍 MultiPeer/ │ ├── LICENSE # 许可证文件 ├── README.md # 项目说明文档 ├── .gitignore # Git忽略文件列表 ├── src # 源代码目录 │ ├── main # 主程序入口及...

gitblog_00864的博客 843
上一篇: Swift中的内存泄漏
下一篇: Swift中结构体-Struct和类-Class的区别
Philm_iOS
博客等级 码龄8年 74粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值