如果我想做"基于NFC的交易"但是以iBeacon的方式,当2个iOS设备进入"立即"范围,如何在没有配对/认证的情况下自动连接两台设备,以便我可以进行交易通信?
情景:
根据我的理解,scanForPeripheralsWithServices
无法为上述情况返回足够的信息,是否有人知道实施此类服务的正确方法?
谢谢
答案 0 :(得分:0)
您描述的场景可以使用与您列出的方式完全基本的连接来执行,无需BLE级别配对,根本不需要身份验证。更确切地说:
connectPeripheral:
连接到POS。仅此一项不会触发身份验证或配对。为了看一个基于RSSI的距离估计的例子,BTLE example是一个很好的起点。以下是BTLECentralViewController.m
的相应摘录- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI
{
// Reject any where the value is above reasonable range
if (RSSI.integerValue > -15) {
return;
}
要实现此事务,您需要了解Core Bluetooth的基础知识:服务,特征,BLE事务(读取,写入,通知......)
答案 1 :(得分:0)
使用iOS CoreLocation
API时,永远不需要配对和身份验证来检测和测试iBeacons。 iBeacons是无连接和仅传输的。您可以通过将两个设备作为iBeacons进行传输,然后使用CoreLocation
测距API来检测接近度来判断两个设备是否在彼此的直接范围内:
- (void)locationManager:(CLLocationManager *)manager didRangeBeacons:(NSArray *)iBeacons inRegion:(CLBeaconRegion *)region {
for (CLBeacon *iBeacon in iBeacons) {
if (iBeacon.proximity == CLProximityImmediate) {
// Add code to process transaction here
}
}
如果您想在验证它们附近后在两台设备之间无线地交换安全数据,您可以使用蓝牙,@ allprog在他的回答中建议。您还可以通过Web服务执行此操作,这使您可以拥有仅支持iBeacon的解决方案,而无需使用CoreBluetooth
API。有关如何运作的详细信息,请参阅this answer。