Start a new topic
Answered

Gerar uma ação quando se aproximar do beacon

Em objective c, como faço para gerar uma ação quando se aproximar do sensor. Teria algum exemplo para executar esta funcionalidade?


Best Answer

Olá Fabricio,


No iOS existe um framework chamado Core Location ao qual os Beacons estão relacionados (mesmo estes sendo dispositivos Bluetooth), como a Apple relaciona os Beacons a micro localização e o GPS é responsável pela macro localização, os dois fazem parte do mesmo framework. 


O Core Location oferece o protocolo CLLocationManagerDelegate, o qual é responsável por monitorar os Beacons. Porém, não irá monitorá-los de maneira automática no iOS, é necessário determinar quais Beacons devem ser monitorados, nesse caso um iBeacon é representado através da class CLBeaconRegion


Para começar a monitorar uma determinada região e acompanhar a variação de um iBeacon dentro da região, os seguintes métodos do LocationManager devem ser chamados: 

CLBeaconRegion *beacon = [[CLBeaconRegion alloc]  initWithProximityUUID:uuid major:majorValue minor:minorValue identifier:name];
[self.locationManager startMonitoringForRegion:beacon];
[self.locationManager startRangingBeaconsInRegion:beacon];

    

O Core Location permite a implementação de métodos delegados para detecção e posterior gatilho de ações. As possibilidades estão descritas abaixo:


O método didRangeBeacons é responsável por detectar a proximidade do Beacon em relação ao dispositivo no qual está rodando sua app (este é chamado somente quando a app está rodando em foreground) :

- (void)locationManager:(CLLocationManager *)manager
        didRangeBeacons:(NSArray *)beacons
               inRegion:(CLBeaconRegion *)region
{
    for (CLBeacon *beacon in beacons) {
       
       // aqui você pode identificar o seu beacon e implementar uma determinada ação (por exemplo: atualizar algum componente na tela)
       
    }
}

Você pode ver mais detalhes da implementação desse método no exemplo fornecido no github da Menvia.

 

Já os métodos abaixo servem para detectar a entrada e saída em uma determinada região:

- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region
{
    // aqui você pode implementar uma ação para quando o usuário entra na região de um beacon que está sendo monitorando, por exemplo: disparar uma notificação de boas-vindas
}

- (void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region
{
    // aqui você pode implementar uma ação para quando o usuário deixa a região de um beacon que está sendo monitorando, por exemplo: disparar uma notificação de agradecimento pela visita
}

Qualquer dúvida estou a disposição,


Sucesso nos seus projetos!


Abraços,


Douglas Hermann









1 Comment

Answer

Olá Fabricio,


No iOS existe um framework chamado Core Location ao qual os Beacons estão relacionados (mesmo estes sendo dispositivos Bluetooth), como a Apple relaciona os Beacons a micro localização e o GPS é responsável pela macro localização, os dois fazem parte do mesmo framework. 


O Core Location oferece o protocolo CLLocationManagerDelegate, o qual é responsável por monitorar os Beacons. Porém, não irá monitorá-los de maneira automática no iOS, é necessário determinar quais Beacons devem ser monitorados, nesse caso um iBeacon é representado através da class CLBeaconRegion


Para começar a monitorar uma determinada região e acompanhar a variação de um iBeacon dentro da região, os seguintes métodos do LocationManager devem ser chamados: 

CLBeaconRegion *beacon = [[CLBeaconRegion alloc]  initWithProximityUUID:uuid major:majorValue minor:minorValue identifier:name];
[self.locationManager startMonitoringForRegion:beacon];
[self.locationManager startRangingBeaconsInRegion:beacon];

    

O Core Location permite a implementação de métodos delegados para detecção e posterior gatilho de ações. As possibilidades estão descritas abaixo:


O método didRangeBeacons é responsável por detectar a proximidade do Beacon em relação ao dispositivo no qual está rodando sua app (este é chamado somente quando a app está rodando em foreground) :

- (void)locationManager:(CLLocationManager *)manager
        didRangeBeacons:(NSArray *)beacons
               inRegion:(CLBeaconRegion *)region
{
    for (CLBeacon *beacon in beacons) {
       
       // aqui você pode identificar o seu beacon e implementar uma determinada ação (por exemplo: atualizar algum componente na tela)
       
    }
}

Você pode ver mais detalhes da implementação desse método no exemplo fornecido no github da Menvia.

 

Já os métodos abaixo servem para detectar a entrada e saída em uma determinada região:

- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region
{
    // aqui você pode implementar uma ação para quando o usuário entra na região de um beacon que está sendo monitorando, por exemplo: disparar uma notificação de boas-vindas
}

- (void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region
{
    // aqui você pode implementar uma ação para quando o usuário deixa a região de um beacon que está sendo monitorando, por exemplo: disparar uma notificação de agradecimento pela visita
}

Qualquer dúvida estou a disposição,


Sucesso nos seus projetos!


Abraços,


Douglas Hermann










1 person likes this
Login or Signup to post a comment