`
haoningabc
  • 浏览: 1477900 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

理解iOS7的Multipeer Connectivity框架

    博客分类:
  • ios
ios 
阅读更多
例子可跑

http://www.oschina.net/translate/intro-multipeer-connectivity-framework-ios-programming?lang=chs&page=1#

git
https://github.com/kakegawa-atsushi/MultipeerConnectivitySample

//
//  FirstViewController.m
//  MCDemo
//
//

#import "FirstViewController.h"
#import "AppDelegate.h"

@interface FirstViewController ()

@property (nonatomic, strong) AppDelegate *appDelegate;

-(void)sendMyMessage;
-(void)didReceiveDataWithNotification:(NSNotification *)notification;

@end

@implementation FirstViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
	// Do any additional setup after loading the view, typically from a nib.
    
    _appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
    
    _txtMessage.delegate = self;
    
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(didReceiveDataWithNotification:)
                                                 name:@"MCDidReceiveDataNotification"
                                               object:nil];
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}


#pragma mark - UITextField Delegate method implementation

-(BOOL)textFieldShouldReturn:(UITextField *)textField{
    [self sendMyMessage];
    return YES;
}


#pragma mark - IBAction method implementation

- (IBAction)sendMessage:(id)sender {
    [self sendMyMessage];
}

- (IBAction)cancelMessage:(id)sender {
    [_txtMessage resignFirstResponder];
}


#pragma mark - Private method implementation

-(void)sendMyMessage{
    NSData *dataToSend = [_txtMessage.text dataUsingEncoding:NSUTF8StringEncoding];
    NSArray *allPeers = _appDelegate.mcManager.session.connectedPeers;
    NSError *error;
    
    [_appDelegate.mcManager.session sendData:dataToSend
                                     toPeers:allPeers
                                    withMode:MCSessionSendDataReliable
                                       error:&error];
    
    if (error) {
        NSLog(@"%@", [error localizedDescription]);
    }
    
    [_tvChat setText:[_tvChat.text stringByAppendingString:[NSString stringWithFormat:@"I wrote:\n%@\n\n", _txtMessage.text]]];
    [_txtMessage setText:@""];
    [_txtMessage resignFirstResponder];
}


-(void)didReceiveDataWithNotification:(NSNotification *)notification{
    MCPeerID *peerID = [[notification userInfo] objectForKey:@"peerID"];
    NSString *peerDisplayName = peerID.displayName;
    
    NSData *receivedData = [[notification userInfo] objectForKey:@"data"];
    NSString *receivedText = [[NSString alloc] initWithData:receivedData encoding:NSUTF8StringEncoding];
    
    [_tvChat performSelectorOnMainThread:@selector(setText:) withObject:[_tvChat.text stringByAppendingString:[NSString stringWithFormat:@"%@ wrote:\n%@\n\n", peerDisplayName, receivedText]] waitUntilDone:NO];
}

@end


分享到:
评论

相关推荐

    Multipeer Connectivity Tutorial

    Multipeer Connectivity是iOS 7及更高版本中引入的一个框架,它为设备间的近场通信提供了强大的支持。该框架利用Wi-Fi、蓝牙个人局域网(Bluetooth Personal Area Network, PAN)以及蓝牙低功耗(Bluetooth Low ...

    THMultipeer:iOS 7 Multipeer 框架的包装器

    THMultpeer 是 Apple iOS Multipeer Connectivity 框架之上的包装器。 它提供了一种更简单的方法来创建和管理会话。 它将节省您处理断开连接的时间,并且已经具有通过将 displayName 设置为设备 ...

    MultipeerConnectivity.framework开发

    Multipeer Connectivity Framework 是iOS 7 推出的众多新框架的一种,它拓宽了操作系统中应用的范围。其目的是使开发者可以创建通过Wi-Fi或蓝牙在近距离建立连接的应用。是在近距离设备间建立互动,交换数据和其他...

    MCBroadcast:通过 MultipeerConnectivity 广播

    MCBroadcast 是一种使用 Multipeer Connectivity 框架与附近设备进行通信的简单方法。 用Swift编写。 使用 iOS SDK 8.3 开发 这个怎么运作 浏览和广告服务 查找附近的同伴以邀请参加会议或自动获得邀请 用法 初始化...

    CocoaLumberjack记录器DDMultipeerLogger.zip

    Multipeer Connectivity 是 iOS、macOS 和 tvOS 平台上的一项原生技术,它使得设备可以发现彼此并建立无线网络连接,以便进行数据传输,如文件共享或实时通信。在 DDMultipeerLogger 中,这个功能被用来实现实时的...

    iOS7Sampler

    iOS7Sampler提供了Multipeer Connectivity的实例,解释了如何实现实时的设备间互动。 通过详尽研究iOS7Sampler中的每一个示例,开发者可以深入了解iOS7的每一个角落,提高自己的开发技能,从而创造出更加先进、符合...

    multipeerconnectivity demo

    在移动设备的通信领域,Apple的MultipeerConnectivity框架提供了一种强大的工具,使得iOS设备之间能够进行无线、直接的通信,无需通过中央服务器。这个框架尤其适用于点对点的数据传输,如在朋友间共享文件或进行...

    iOS 7 编程基础教程 (英文版电子书)

    例如,了解如何使用Auto Layout进行响应式布局,以及如何利用新引入的Multipeer Connectivity框架实现设备间的通信。 **5. 模块化编程与Storyboards** 在iOS开发中,模块化编程可以帮助你组织代码,提高可读性和可...

    iOS即时通讯视频教学

    在iOS平台上,开发者可以利用苹果提供的Multipeer Connectivity框架,或者选择第三方SDK如Firebase Cloud Messaging (FCM)、Socket.IO等来实现即时通讯功能。 教程中,你将学习到以下关键知识点: 1. **Multipeer ...

    iOS7 Day-by-Day

    这为读者提供了一个实践理论的机会,帮助他们更好地理解和吸收iOS7的新功能。 《iOS7 Day-by-Day》不仅是一本书,也是一个日更的博客系列,每日更新一个与iOS7相关的新知识点。作者通过这种方式,以小块内容逐步...

    swift-用于并行处理的iOSSwift框架

    此外,为了实现设备间的协调,可能需要利用 Apple 的 Multipeer Connectivity 框架,它允许 iOS 设备通过 Wi-Fi 或 Bluetooth 进行直接通信。 在 "ngageoint-fog-machine-dccbd7b" 这个压缩包中,很可能包含了 Fog ...

    iOS游戏应用源代码——barnstar-Quarto-5d7b720.zip

    6. **Multipeer Connectivity**:如果游戏支持多人对战,那么它可能使用了Multipeer Connectivity框架,使得在同一Wi-Fi或蓝牙网络下的设备之间能直接通信,实现游戏的实时同步。 7. **Storyboard与Auto Layout**:...

    iOS游戏应用源代码——rmorlok-GetOffMyLawn-148492d.zip

    8. **Multipeer Connectivity**:若游戏包含多人协作或对战模式,可能使用了Multipeer Connectivity框架,它允许设备之间直接通信,实现局域网内的游戏同步。 9. **ARC(Automatic Reference Counting)**:Swift中...

    升级到ios7的xcode5代码

    5. **新框架和API**:iOS7引入了一些新框架,如Multipeer Connectivity(多设备通信)、Core Data的SQLite3支持等。开发者需要学习并适配这些新API。 6. **测试与调试**:升级后,开发者需要对所有代码进行详尽的...

    IOS应用源码——收音机.rar

    5. **Multipeer Connectivity**:如果应用还包含了本地多设备间音频共享功能,可能会使用Multipeer Connectivity框架,使得在同一Wi-Fi或蓝牙范围内的设备可以互相通信和共享内容。 6. **Core Data**:虽然不是必需...

    IOS应用源码之局域网或蓝牙连接.zip

    接下来,我们要讨论的是蓝牙连接,特别是苹果的Multipeer Connectivity框架。Multipeer Connectivity是iOS、macOS和tvOS平台上用于设备间无线通信的框架,它支持通过Wi-Fi和蓝牙BLE(Bluetooth Low Energy)进行连接...

    iOS实例开发源码——Malaar-face-off-4b1881c.zip

    Malaar Face Off中的"Face Off"可能涉及到多人互动,因此可能用到了Multipeer Connectivity框架。这个框架允许设备之间直接通信,进行文件共享或实时通信,无需依赖互联网连接,特别适用于本地多玩家游戏或协同应用...

    iOS实例开发源码——glimberg-mac-n-back-67aa148.zip

    6. **Multipeer Connectivity**:如果应用支持多人游戏或同步,可能使用了Multipeer Connectivity框架,允许设备之间通过Wi-Fi或蓝牙进行通信。 7. **Animation和Core Animation**:为了增强用户体验,开发者可能...

Global site tag (gtag.js) - Google Analytics