NFC(Near Field Commuciation),近距離無線通訊技術,是一種短距離的高頻無線通訊技術。那不禁想到它與Bluetooth藍牙有什么區別呢?
在網上查詢了一下,區別大概分為以下幾點:
(1)傳輸距離
NFC的傳輸距離一般為10cm,而Bluetooth的傳輸距離可以達到10米
(2)配置
NFC不需要手動設置匹配,直接將兩部設備碰觸一下即可;Bluetooth需要單獨設置和匹配
(3)適用場合
NFC的適用場景比較多,如支付、打卡、刷卡等;Bluetooth的適用場景就比較局限
NFC對應的WinRT API-- Windows.Networking.Proximity
PeerFinder
通過該類可以實現去發現附近的設備並與之創建socket連接,發送接收信息。
在網上查詢了一下,區別大概分為以下幾點:
(1)傳輸距離
NFC的傳輸距離一般為10cm,而Bluetooth的傳輸距離可以達到10米
(2)配置
NFC不需要手動設置匹配,直接將兩部設備碰觸一下即可;Bluetooth需要單獨設置和匹配
(3)適用場合
NFC的適用場景比較多,如支付、打卡、刷卡等;Bluetooth的適用場景就比較局限
NFC對應的WinRT API-- Windows.Networking.Proximity
PeerFinder
通過該類可以實現去發現附近的設備並與之創建socket連接,發送接收信息。
PeerFinder.TriggeredConnectionStateChanged +=
new TypedEventHandler<
object, TriggeredConnectionStateChangedEventArgs>(TriggeredConnectionStateChangedEventHandler);
PeerFinder.ConnectionRequested += new TypedEventHandler< object, ConnectionRequestedEventArgs>(PeerConnectionRequested);
PeerFinder.ConnectionRequested += new TypedEventHandler< object, ConnectionRequestedEventArgs>(PeerConnectionRequested);
PeerFinder.Start();
IReadOnlyList<PeerInformation> _peerInformationList=await PeerFinder.FindAllPeersAsync();
StreamSocket _socket = await PeerFinder.ConnectAsync(peerToConnect);
首先注冊兩個事件:
TriggeredConnectionStateChanged :用於跟蹤與遠程機觸碰期間的一個連接狀態
ConnectionRequested: 當遠程機有連接請求時觸發
調用相應的方法:
FindAllPeersAsync():瀏覽所有在無線區域范圍內運行相同APP的同等計算機
await PeerFinder.ConnectAsync():與范圍內的同等計算機相連接
TriggeredConnectionStateChanged :用於跟蹤與遠程機觸碰期間的一個連接狀態
ConnectionRequested: 當遠程機有連接請求時觸發
調用相應的方法:
FindAllPeersAsync():瀏覽所有在無線區域范圍內運行相同APP的同等計算機
await PeerFinder.ConnectAsync():與范圍內的同等計算機相連接
ProximityDevice
可以發送消息或訂閱消息至直接的設備,即發送一消息,然后與另一設備觸碰一下,別一設備即可收到相應的消息
事件:
DeviceArrived: 當在近距離范圍內有設備進入時觸發
DeviceDeparted: 當在近距離范圍內有設備移出時觸發
事件:
DeviceArrived: 當在近距離范圍內有設備進入時觸發
DeviceDeparted: 當在近距離范圍內有設備移出時觸發
//先實例化一個ProximityDevice對象,並激活
ProximityDevice _proximityDevice=ProximityDevice.GetDefault();
//發送消息,當然發送方法有很多重載,可以發送字符,可以發送二進制流,可以發送Uri
long _publishedMessageId = _proximityDevice.PublishMessage("Windows.SampleMessageType", publishText);
ProximityDevice _proximityDevice=ProximityDevice.GetDefault();
//發送消息,當然發送方法有很多重載,可以發送字符,可以發送二進制流,可以發送Uri
long _publishedMessageId = _proximityDevice.PublishMessage("Windows.SampleMessageType", publishText);
//另一設備與執行subscribe方法,即可獲得消息
當然還有其它的屬性和方法,這里就不一一試了,做一個完整的Demo流程,測試一下還是挺好玩的。
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;
}
}
void MessageReceived(ProximityDevice proximityDevice, ProximityMessage message)
{
if (message.MessageType == " StringMessage ")
{
string mes = message.DataAsString;
}
else if(message.MessageType== " BufferMessage ")
{
IBuffer buffer = message.Data;
}
}
PeerFind:使用這個對象需要先尋找,連接,然后進行傳輸信息
ProximityDevice:這種方式相對簡單些,一端發送消息,另一端只要subscribe就可獲得消息,但前提是距離得相當地近。
ProximityDevice:這種方式相對簡單些,一端發送消息,另一端只要subscribe就可獲得消息,但前提是距離得相當地近。
如果您對該技術有更深的理解也希望能指點下哦~