我想创建一个向我显示配对设备的应用程序(例如,在检测并显示给我之前与我配对的任何设备)。
另外在下一次我想向配对设备发送一个NSString(例如“你好” )时。
我在谷歌搜索,我很困惑!

请先告诉我如何将设备与手机配对,然后告诉我如何将NSString值发送给他们。

最佳答案

这是您需要的一个示例:

您必须对其进行调整以匹配您的需求。但是你可以看到它是如何工作的...

@implementation ViewController
{
   CBPeripheralManager *_peripheralManager;
   BOOL _isAdvertising;
}

- (void)_startAdvertising
{
   NSUUID *estimoteUUID = [[NSUUID alloc] initWithUUIDString:@"B9407F30-F5F8-466E-AFF9-25556B57FE6D"];

   CLBeaconRegion *region = [[CLBeaconRegion alloc] initWithProximityUUID:estimoteUUID
                                                                    major:2
                                                                    minor:1
                                                               identifier:@"SimEstimote"];
   NSDictionary *beaconPeripheralData = [region peripheralDataWithMeasuredPower:nil];

   [_peripheralManager startAdvertising:beaconPeripheralData];
}

- (void)_updateEmitterForDesiredState
{
   if (_peripheralManager.state == CBPeripheralManagerStatePoweredOn)
   {
      // only issue commands when powered on

      if (_isAdvertising)
      {
         if (!_peripheralManager.isAdvertising)
         {
            [self _startAdvertising];
         }
      }
      else
      {
         if (_peripheralManager.isAdvertising)
         {
            [_peripheralManager stopAdvertising];
         }
      }
   }
}

#pragma mark - CBPeripheralManagerDelegate

- (void)peripheralManagerDidUpdateState:(CBPeripheralManager *)peripheral
{
   [self _updateEmitterForDesiredState];
}

#pragma mark - Actions

- (IBAction)advertisingSwitch:(UISwitch *)sender
{
   _isAdvertising = sender.isOn;

   [self _updateEmitterForDesiredState];
}

@end

用于监视:
@implementation AppDelegate
{
   CLLocationManager *_locationManager;
   BOOL _isInsideRegion; // flag to prevent duplicate sending of notification
}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)options
{
   // create a location manager
   _locationManager = [[CLLocationManager alloc] init];

   // set delegate, not the angle brackets
   _locationManager.delegate = self;

   NSUUID *estimoteUUID = [[NSUUID alloc] initWithUUIDString:@"B9407F30-F5F8-466E-AFF9-25556B57FE6D"];
   CLBeaconRegion *region = [[CLBeaconRegion alloc] initWithProximityUUID:estimoteUUID
                                                               identifier:@"Estimote Range"];

   // launch app when display is turned on and inside region
   region.notifyEntryStateOnDisplay = YES;

   if ([CLLocationManager isMonitoringAvailableForClass:[CLBeaconRegion class]])
   {
      [_locationManager startMonitoringForRegion:region];

      // get status update right away for UI
      [_locationManager requestStateForRegion:region];
   }
   else
   {
      NSLog(@"This device does not support monitoring beacon regions");
   }

    // Override point for customization after application launch.
    return YES;
}

- (void)_sendEnterLocalNotification
{
   if (!_isInsideRegion)
   {
      UILocalNotification *notice = [[UILocalNotification alloc] init];

      notice.alertBody = @"Inside Estimote beacon region!";
      notice.alertAction = @"Open";

      [[UIApplication sharedApplication] scheduleLocalNotification:notice];
   }

   _isInsideRegion = YES;
}

- (void)_sendExitLocalNotification
{
   if (_isInsideRegion)
   {
      UILocalNotification *notice = [[UILocalNotification alloc] init];

      notice.alertBody = @"Left Estimote beacon region!";
      notice.alertAction = @"Open";

      [[UIApplication sharedApplication] scheduleLocalNotification:notice];
   }

   _isInsideRegion = NO;
}

- (void)_updateUIForState:(CLRegionState)state
{
   ViewController *vc = (ViewController *)self.window.rootViewController;

   if (state == CLRegionStateInside)
   {
      vc.label.text = @"Inside";
   }
   else if (state == CLRegionStateOutside)
   {
      vc.label.text = @"Outside";
   }
   else
   {
      vc.label.text = @"Unknown";
   }
}

#pragma mark - CLLocationManagerDelegate

- (void)locationManager:(CLLocationManager *)manager
      didDetermineState:(CLRegionState)state forRegion:(CLRegion *)region
{
   // always update UI
   [self _updateUIForState:state];

   if ([UIApplication sharedApplication].applicationState == UIApplicationStateActive)
   {
      // don't send any notifications
      return;
   }

   if (state == CLRegionStateInside)
   {
      [self _sendEnterLocalNotification];
   }
   else
   {
      [self _sendExitLocalNotification];
   }
}

@end

您可以在以下地址获得完整的说明:
  http://www.cocoanetics.com/2013/11/can-you-smell-the-ibeacon/

关于ios - 如何获得配对的蓝牙设备,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23855844/

10-13 04:29