iOS 7 与 Xamarin - MultiPeer Connectivity(1)

随着时代的改变,移动设备在生活工作都开始取代原有的pc。设备间的数据交互就成为了必备可少的功能。比较成熟的产品有NFC。这个啪啪的操作很流行,例如分享图片,分享文件等 。但是在iOS设备中还没有NFC 的功能。那有什么替代的解决方案?比较常见的是利用socket ,bonjour等协议去实现。在iOS 7中有了新的方法去做就是接下来要介绍的MultiPeer Connectivity .

MultiPeer Connectivity

就是一种方便发现周边设备,并可以进行交互的一种方式。通常情况下只需要打开Wifi,或者蓝牙设备就可以进行。

应用场景有交互式辅助,文件共享,协同工作等。

在实现MultiPeer Connectivity中有几个关键的术语需要注意

NearBy

指的是类似wifi,蓝牙的无线近墙技术

Peer

周边设备

Advertiser 

信号发出者,使设备在一定距离被发现

Browser

搜索信号发出者,可以连接
 
一个重要疑问就是这个技术安全吗? 这方面iOS 7考虑很多。提供了验证和加密。所以你放心使用。 

今天我们就先用简单的方法实现设备之间是怎样通过MultiPeer Connectivity进行通信,当然我是用Xamarin .

在Xcode 5 中 ,我们需要添加MultiPeerConnectivity.Framework . 而在Xamarin 中我们也需要,但是是在类文件中 ,

using MonoTouch.MultipeerConnectivity;

接下来就需要使你的设备支持MultiPeerConnectivity,也就是Advertiser 。

首先我们要建立一个PeerID, 这个作为被发现后的唯一标识。通常我习惯用设备的名字

MCPeerID  myPeerID = new MCPeerID (UIDevice.CurrentDevice.Name);

接着的事情是建立一个会话session去与 这个PeeID 绑定, 因为在接收数据,和发送数据都是通过这个会话去完成,并可以检测连接的状态。你还可以对会话进行加密等。

MCSession session = new MCSession (myPeerID,new NSObject[]{},MCEncryptionPreference.None);

最后一步是添加Advertiser 

MCAdvertiserAssistant assistant = new MCAdvertiserAssistant ("service", new NSDictionary (), session);
assistant.Start ();

好这样就可以简单地实现信号发出端的基本设置。

这里我需要重复强调下MCSession。

它有一个Delegate MCSessionDelegate 当需要接收数据时就要用到。

如这里我要接收 数据就需要重定义接受的方法

public virtual void DidReceiveData (MCSession session, NSData data, MCPeerID peerID)

如果需要检测会话状态就需要重新定义

public virtual void DidChangeState (MCSession session, MCPeerID peerID, MCSessionState state)

检测端browser .

MCBrowserViewController 就是搜索端,这个界面可以检测发送信号的设备,并连接。

MCBrowserViewController browserVC = new MCBrowserViewController ("service", session);
PresentViewController (browserVC, true, null);

这里也有一个delegate 方法去对检测功能进行一些方法进行定义如done,如cancel等操作。

好这样就可以建立好一个基本的MultiPeer Connectivity的基本环境了。传输数据是下一篇的内容。大家不要错过。

转自:卢建晖的技术博客

Xamarin中文网站,了解更多:http://xamarin.csdn.net

联系CSDN了解更多产品讯息:010-84783783


你可能感兴趣的:(android,C#,ios7,Xamarin,移动跨平台)