SORU
22 EYLÜL 2013, Pazar


Çalışma arka planda bir iBeacon olarak iPhone

Mümkün Bluetooth LE bir çevre olarak iOS 7 cihaz (iBeacon) çalıştırın ve arka planda reklam var mı? Bu kod ile ön plana altında reklam almak mümkün olmuştur ve reklam duruyor ana ekran için başka bir iOS cihazı ama geri dönmeden hemen görebiliyor. Bu plist bluetooth-çevre arka modu ekleme yaptım ama bu cihaz arka planda bluetooth kullanmak istiyor istemi söyleyerek yapsam bile yardım etmiyordu. Ben yanlış bir şey yapıyorum ya da bu sadece iOS 7'de mümkün değil mi?

peripManager = [[CBPeripheralManager alloc] initWithDelegate:self queue:nil];

- (void)peripheralManagerDidUpdateState:(CBPeripheralManager *)peripheral
{
  if (peripheral.state != CBPeripheralManagerStatePoweredOn) {
      return;
  }

  NSString *identifier = @"MyBeacon";
  //Construct the region
  CLBeaconRegion *beaconRegion = [[CLBeaconRegion alloc] initWithProximityUUID:uuid identifier:identifier];

  //Passing nil will use the device default power
  NSDictionary *payload = [beaconRegion peripheralDataWithMeasuredPower:nil];

  //Start advertising
  [peripManager startAdvertising:payload];
}

Burada alma/dinleme ucunda kodu:

- (void)locationManager:(CLLocationManager *)manager didRangeBeacons:(NSArray *)beacons
           inRegion:(CLBeaconRegion *)region
{
//Check if we have moved closer or farther away from the iBeacon…
if (beacons.count > 0) {
    CLBeacon *beacon = [beacons objectAtIndex:0];

    switch (beacon.proximity) {
        case CLProximityImmediate:
            [self log:[NSString stringWithFormat:@"You're Sitting on it! %li", (long)beacon.rssi]];
            break;
        case CLProximityNear:
            [self log:[NSString stringWithFormat:@"Getting Warmer! %li", (long)beacon.rssi]];
            break;
        default:
            [self log:[NSString stringWithFormat:@"It's around here somewhere! %li", (long)beacon.rssi]];
            break;
    }
}
}

CEVAP
12 Kasım 2013, Salı


Standart CoreBluetooth reklam uygulaması arka planda iken, ama eğer CLBeaconRegion sözlük ile başlamış olsalardı yayınlanmadı. CoreLocation çerçeve tamamen hendek ve kendi oluşturmak için geçici yakınlık "çerçeve" kullanarak sadece CoreBlueTooth.

Yine de bu Bilgi uygun bir arka plan belirteçleri kullanmak gerekir.plıst dosya (örneğin bluetooth-peripheral bluetooth-central).

Kod şöyle görünür:

1) standart bir çevre reklam CBPeripheralManager kullanarak oluşturun

NSDictionary *advertisingData = @{CBAdvertisementDataLocalNameKey:@"my-peripheral",
                                  CBAdvertisementDataServiceUUIDsKey:@[[CBUUID UUIDWithString:identifier]]};

// Start advertising over BLE
[peripheralManager startAdvertising:advertisingData];

2) kullanın. CBCentralManager servis için UUID belirtilen kullanarak taramak için kullanın.

NSDictionary *scanOptions = @{CBCentralManagerScanOptionAllowDuplicatesKey:@(YES)};
NSArray *services = @[[CBUUID UUIDWithString:identifier]];

[centralManager scanForPeripheralsWithServices:services options:scanOptions];

3) CBCentralManagerDelegate yöntemi didDiscoverPeripheral reklam RSSI değeri okuyun.

- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral
     advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI
{

    NSLog(@"RSSI: %d", [RSSI intValue]);
}

4) bir mesafe içine karanlıkta çalışırken değerleri Çevirir.

- (INDetectorRange)convertRSSItoINProximity:(NSInteger)proximity
{
    if (proximity < -70)
        return INDetectorRangeFar;
    if (proximity < -55)
        return INDetectorRangeNear;
    if (proximity < 0)
        return INDetectorRangeImmediate;

    return INDetectorRangeUnknown;
}

"" Veya "ortalama" işe yarar bir şey almak için karanlıkta çalışırken değerleri. kolaylaştırmak için gerekli buldum Bu herhangi bir sensör verileri (örneğin ivme verileri) ile çalışırken daha farklı değil.

Bu kavramı tam olarak umarım bir yerde bir noktada yayınlamak için çalışıyor.

Eğer zor durumda kalırsanız da kullan docs (Core Bluetooth Programlama Kılavuzu).

Güncelleme:21**. work related project bir parçası olarak bu konuda çalıştım.

Güncelleme #2:Apple release major improvements to iBeacon background behavior for iOS7.1

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • A Alkhaldi

    A Alkhaldi

    12 Mayıs 2007
  • Juan Carlos Candela Bordera

    Juan Carlos

    4 Mart 2009
  • PaysNatalAu's channel

    PaysNatalAu'

    11 Aralık 2010