iOS 7 中的 MultipeerConnectivityFramework

Posted

技术标签:

【中文标题】iOS 7 中的 MultipeerConnectivityFramework【英文标题】:MultipeerConnectivityFramework in iOS 7 【发布时间】:2015-09-17 12:03:36 【问题描述】:

我是一名 ios 开发人员,正在开发一个应用程序,我想在其中列出蓝牙设备名称(iPod、iPad、Macbook 等),O 正在为此使用 MultiPeerConnectivity 框架。

MultiPeerConnectivity 框架使用MCBrowserViewController 负责浏览附近的设备,MCAdvertiserAssistant 用于通告设备的连接性。使用 MultiPeerConnectivity 框架,您有两台设备,一台应该宣传自己,第二台应该浏览设备,而不是正常工作。

但我的问题是: 如何搜索无法使用该应用程序的设备(我的意思是如何搜索我的 Macbook 或其他蓝牙设备,如蓝牙键盘等,我不是在谈论 android 设备)。是否可以通过 MultiPeerConnectivity 框架?或任何其他解决方案?

这是我的代码

-(void)setupPeerAndSessionWithDisplayName:(NSString *)_displayName

    self.peerID = [[MCPeerID alloc] initWithDisplayName:_displayName];
    self.session = [[MCSession alloc] initWithPeer:self.peerID];
    self.session.delegate = self;




-(void)setupMCBrowser

    self.browser = [[MCBrowserViewController alloc] initWithServiceType:@"chat-files" session:self.session];




-(void)advertiseSelf:(BOOL)shouldAdvertise

    if (shouldAdvertise) 
        self.advertiser = [[MCAdvertiserAssistant alloc] initWithServiceType:@"chat-files" discoveryInfo:nil session:self.session];

        [self.advertiser start];
    
    else
        [self.advertiser stop];
        self.advertiser = nil;
    

【问题讨论】:

【参考方案1】:

如果您希望发现其他 iOS 设备以及其他 Mac 和外围设备,则需要将 Multipeer ConnectivityCore Bluetooth 结合使用。

MPC 旨在用于发现您应用的其他实例。如果您想发现 Mac,那么他们必须运行带有 Multipeer Connectivity 广告的 Mac 应用程序,并使用与您的应用程序相同的 serviceType

如果您想发现外围设备,您需要使用Core Bluetooth - 网上有很多教程,您也可以查看this SO question 作为起点。

【讨论】:

感谢@ChrisH 的回复。 . .但我认为使用核心蓝牙,一个设备应该充当外围设备,一个设备应该是中心设备(在这种情况下,两个设备也都有应用程序)对吧? 是的 - 更新的答案 - 外围设备可以通过核心蓝牙发现,其他 Mac 需要运行 MPC 的 Mac 应用程序。 实际上我想通过蓝牙将外部设备(MFi 许可)与我的 iOS 应用程序连接起来。 . .我们可以使它成为外围设备吗?有什么想法或建议吗? 如果它是蓝牙设备,那么是的,您应该能够将其作为外围设备发现。

以上是关于iOS 7 中的 MultipeerConnectivityFramework的主要内容,如果未能解决你的问题,请参考以下文章

ios 7 中的区域监控

iOS 6 + 7 中的 iOS 隐藏状态栏和标签栏

iOS 7 中的 MultipeerConnectivityFramework

iOS 7 中的 PushViewController

容器覆盖 UITableView - iOS 7 中的 SearchBar / SearchDisplayController

iOS 6 中的导航栏看起来像 iOS 7 中的栏