| 
 | 
	
 
 
NFC(Near Field Commuciation),近距离无线通讯技术,是一种短距离的高频无线通讯技术。那不禁想到它与Bluetooth蓝牙有什么区别呢? 
在网上查询了一下,区别大概分为以下几点: 
(1)传输距离 
   NFC的传输距离一般为10cm,而Bluetooth的传输距离可以达到10米 
(2)配置 
   NFC不需要手动设置匹配,直接将两部设备碰触一下即可;Bluetooth需要单独设置和匹配 
(3)适用场合 
   NFC的适用场景比较多,如支付、打卡、刷卡等;Bluetooth的适用场景就比较局限 
NFC对应的WinRT API--Windows.Networking.Proximity 
PeerFinder 
通过该类可以实现去发现附近的设备并与之创建socket连接,发送接收信息。 
 
 
 PeerFinder.TriggeredConnectionStateChanged += new TypedEventHandler(TriggeredConnectionStateChangedEventHandler); 
PeerFinder.ConnectionRequested += new TypedEventHandler(PeerConnectionRequested);   PeerFinder.Start(); 
IReadOnlyList _peerInformationList=await PeerFinder.FindAllPeersAsync(); 
StreamSocket _socket = await PeerFinder.ConnectAsync(peerToConnect);  
 
 
首先注册两个事件: 
TriggeredConnectionStateChanged :用于跟踪与远程机触碰期间的一个连接状态 
ConnectionRequested: 当远程机有连接请求时触发 
调用相应的方法: 
FindAllPeersAsync():浏览所有在无线区域范围内运行相同APP的同等计算机 
await PeerFinder.ConnectAsync():与范围内的同等计算机相连接   
 
ProximityDevice 
可以发送消息或订阅消息至直接的设备,即发送一消息,然后与另一设备触碰一下,别一设备即可收到相应的消息 
事件: 
DeviceArrived: 当在近距离范围内有设备进入时触发 
DeviceDeparted: 当在近距离范围内有设备移出时触发   
 
//先实例化一个ProximityDevice对象,并激活 
ProximityDevice _proximityDevice=ProximityDevice.GetDefault(); 
//发送消息,当然发送方法有很多重载,可以发送字符,可以发送二进制流,可以发送Uri 
long _publishedMessageId = _proximityDevice.PublishMessage("Windows.SampleMessageType", publishText);   
 
//另一设备与执行subscribe方法,即可获得消息 
 
 
long _subscribedMessageId = _proximityDevice.SubscribeForMessage("Windows.SampleMessageType", MessageReceived); 
 void MessageReceived(ProximityDevice proximityDevice, ProximityMessage message) 
        { 
            if (message.MessageType == "StringMessage") 
            { 
                string mes = message.DataAsString; 
            } 
            else if(message.MessageType=="BufferMessage") 
            { 
                IBuffer buffer = message.Data; 
            } 
        } 当然还有其它的属性和方法,这里就不一一试了,做一个完整的Demo流程,测试一下还是挺好玩的。 
 
PeerFind:使用这个对象需要先寻找,连接,然后进行传输信息 
ProximityDevice:这种方式相对简单些,一端发送消息,另一端只要subscribe就可获得消息,但前提是距离得相当地近。   
 
如果您对该技术有更深的理解也希望能指点下哦~ |   
 
 
 
 | 
  
 |