iBeacon用于自动外设配对+认证?

时间:2014-03-13 10:34:26

标签: ios transactions bluetooth core-bluetooth ibeacon

如果我想做"基于NFC的交易"但是以iBeacon的方式,当2个iOS设备进入"立即"范围,如何在没有配对/认证的情况下自动连接两台设备,以便我可以进行交易通信?

情景:

  1. 用户的iPhone检测到iBeacon信号,提示用户打开应用
  2. 用户打开应用程序,并想要购买实体商品
  3. 用户将他的设备抓到零售商的基于iOS的POS设备
  4. 两个iOS设备互相检测到的是"立即"范围并开始连接/配对而无需手动验证
  5. 交易沟通从这里开始
  6. 根据我的理解,scanForPeripheralsWithServices无法为上述情况返回足够的信息,是否有人知道实施此类服务的正确方法?

    谢谢

2 个答案:

答案 0 :(得分:0)

您描述的场景可以使用与您列出的方式完全基本的连接来执行,无需BLE级别配对,根本不需要身份验证。更确切地说:

  1. iBeacon的存在触发应用程序通知用户有机会购买东西。
  2. 客户端的iOS设备扫描外围设备,零售商的POS广告它。使用来自广告包的RSSI值估计两者之间的距离。如果此值足够高(实际上,高于给定阈值,如-30左右,则激活下一步。您可以选择适合您需要的任何值)。
  3. 客户端使用connectPeripheral:连接到POS。仅此一项不会触发身份验证或配对。
  4. 您可以使用安全加密和身份验证以及任何需要的方式来实现事务。这是您的解决方案的完全专有,您需要创建它或使现有的一个工作。 (但我不知道现有的实现。)
  5. 为了看一个基于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