Seguimiento de ubicación
Aprende a hacer un seguimiento de la ubicación mediante el SDK de Braze.
Registro de la ubicación actual
Aunque el seguimiento continuo esté desactivado, puedes registrar manualmente la ubicación actual del usuario utilizando el método setLastKnownLocation()
método.
1
2
3
4
5
6
Braze.getInstance(context).getCurrentUser(new IValueCallback<BrazeUser>() {
@Override
public void onSuccess(BrazeUser brazeUser) {
brazeUser.setLastKnownLocation(LATITUDE_DOUBLE_VALUE, LONGITUDE_DOUBLE_VALUE, ALTITUDE_DOUBLE_VALUE, ACCURACY_DOUBLE_VALUE);
}
}
1
2
3
Braze.getInstance(context).getCurrentUser { brazeUser ->
brazeUser.setLastKnownLocation(LATITUDE_DOUBLE_VALUE, LONGITUDE_DOUBLE_VALUE, ALTITUDE_DOUBLE_VALUE, ACCURACY_DOUBLE_VALUE)
}
Seguimiento continuo de la ubicación
A partir de Android Marshmallow, debes pedir a tus usuarios que acepten explícitamente el seguimiento de ubicación. Una vez que lo hagan, Braze puede empezar a seguir su ubicación al inicio de la siguiente sesión. A diferencia de las versiones anteriores de Android, en las que sólo era necesario declarar los permisos de ubicación en tu AndroidManifest.xml
.
Para realizar un seguimiento continuo de la ubicación de un usuario, tendrás que declarar la intención de tu aplicación de recopilar datos de ubicación añadiendo al menos uno de los siguientes permisos a tu archivo AndroidManifest.xml
.
Permiso | Descripción |
---|---|
ACCESS_COARSE_LOCATION |
Utiliza el proveedor no GPS que consuma menos batería (como una red doméstica). Normalmente, esto es suficiente para la mayoría de las necesidades de datos de ubicación. Según el modelo de permisos en tiempo de ejecución, la concesión del permiso de ubicación autoriza implícitamente la recopilación de datos de ubicación fina. |
ACCESS_FINE_LOCATION |
Incluye datos GPS para una ubicación más precisa. Según el modelo de permisos en tiempo de ejecución, conceder permiso de ubicación también cubre el acceso a la ubicación fina. |
Tu AndroidManifest.xml
debe ser similar al siguiente:
1
2
3
4
5
6
7
8
<manifest ... >
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<application ... >
...
</application>
</manifest>
Desactivar el seguimiento continuo
Puedes desactivar el seguimiento continuo en tiempo de compilación o de ejecución.
Para desactivar el seguimiento de ubicación continuo en tiempo de compilación, configura com_braze_enable_location_collection
en false
en braze.xml
:
1
<bool name="com_braze_enable_location_collection">false</bool>
Para desactivar selectivamente el seguimiento de ubicación continuo en tiempo de ejecución, utiliza BrazeConfig
:
1
2
3
4
BrazeConfig brazeConfig = new BrazeConfig.Builder()
.setIsLocationCollectionEnabled(false)
.build();
Braze.configure(this, brazeConfig);
1
2
3
4
val brazeConfig = BrazeConfig.Builder()
.setIsLocationCollectionEnabled(false)
.build()
Braze.configure(this, brazeConfig)
Registro de la ubicación actual
Paso 1: Configura tu proyecto
Al utilizar las características de ubicación de Braze, tu aplicación es responsable de solicitar autorización para utilizar los servicios de ubicación. No dejes de consultar Desarrollador de Apple: Solicitud de autorización a los servicios de ubicación del usuario.
Para habilitar el seguimiento de ubicación, abre tu proyecto de Xcode y selecciona tu aplicación. En la pestaña General, añade el módulo BrazeLocation
.
En tu archivo AppDelegate.swift
, importa el módulo BrazeLocation
en la parte superior del archivo. Añade una instancia de BrazeLocationProvider
a la configuración de Braze, asegurándote de que todos los cambios en la configuración se realizan antes de llamar a Braze(configuration:)
. Consulta Braze.Configuration.Location
para ver las configuraciones disponibles.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import UIKit
import BrazeKit
import BrazeLocation
@main
class AppDelegate: UIResponder, UIApplicationDelegate {
static var braze: Braze? = nil
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
// Setup Braze
let configuration = Braze.Configuration(apiKey: brazeApiKey, endpoint: brazeEndpoint)
configuration.logger.level = .info
configuration.location.brazeLocationProvider = BrazeLocationProvider()
configuration.location.automaticLocationCollection = true
configuration.location.geofencesEnabled = true
configuration.location.automaticGeofenceRequests = true
let braze = Braze(configuration: configuration)
AppDelegate.braze = braze
return true
}
}
En tu archivo AppDelegate.m
, importa el módulo BrazeLocation
en la parte superior del archivo. Añade una instancia de BrazeLocationProvider
a la configuración de Braze, asegurándote de que todos los cambios en la configuración se realizan antes de llamar a Braze(configuration:)
. Consulta BRZConfigurationLocation
para ver las configuraciones disponibles.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#import "AppDelegate.h"
@import BrazeKit;
@import BrazeLocation;
@implementation AppDelegate
#pragma mark - Lifecycle
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Setup Braze
BRZConfiguration *configuration =
[[BRZConfiguration alloc] initWithApiKey:brazeApiKey
endpoint:brazeEndpoint];
configuration.logger.level = BRZLoggerLevelInfo;
configuration.location.brazeLocationProvider = [[BrazeLocationProvider alloc] init];
configuration.location.automaticLocationCollection = YES;
configuration.location.geofencesEnabled = YES;
configuration.location.automaticGeofenceRequests = YES;
Braze *braze = [[Braze alloc] initWithConfiguration:configuration];
AppDelegate.braze = braze;
[self.window makeKeyAndVisible];
return YES;
}
#pragma mark - AppDelegate.braze
static Braze *_braze = nil;
+ (Braze *)braze {
return _braze;
}
+ (void)setBraze:(Braze *)braze {
_braze = braze;
}
@end
Paso 2: Registrar la ubicación del usuario
A continuación, registra en Braze la última ubicación conocida del usuario. Los siguientes ejemplos suponen que has asignado la instancia de Braze como variable en tu AppDelegate
.
1
2
AppDelegate.braze?.user.setLastKnownLocation(latitude:latitude,
longitude:longitude)
1
2
3
4
5
AppDelegate.braze?.user.setLastKnownLocation(latitude:latitude,
longitude:longitude,
altitude:altitude,
horizontalAccuracy:horizontalAccuracy,
verticalAccuracy:verticalAccuracy)
1
2
3
4
[AppDelegate.braze.user setLastKnownLocationWithLatitude:latitude
longitude:longitude
horizontalAccuracy:horizontalAccuracy];
1
2
3
4
5
6
[AppDelegate.braze.user setLastKnownLocationWithLatitude:latitude
longitude:longitude
horizontalAccuracy:horizontalAccuracy
altitude:altitude
verticalAccuracy:verticalAccuracy];
Para más información, consulta Braze.User.swift
.
Registro de la ubicación actual
Para obtener la ubicación actual de un usuario, utiliza el método de la API de geolocalización getCurrentPosition()
de la API de geolocalización. Esto pedirá inmediatamente al usuario que permita o rechace el seguimiento (a menos que ya lo haya hecho).
1
2
3
4
5
6
7
8
9
10
11
12
13
import * as braze from "@braze/web-sdk";
function success(position) {
var coords = position.coords;
braze.getUser().setLastKnownLocation(
coords.latitude,
coords.longitude,
coords.accuracy,
coords.altitude,
coords.altitudeAccuracy
);
}
navigator.geolocation.getCurrentPosition(success);
Ahora, cuando se envían datos a Braze, el SDK puede detectar automáticamente el país del usuario utilizando su dirección IP. Para más información, consulta setLastKnownLocation().
Seguimiento continuo de la ubicación
Para hacer un seguimiento continuo de la ubicación de un usuario durante la carga de una página, utiliza el método de la API de geolocalización watchPosition()
de la API de geolocalización. Al llamar a este método, se pedirá inmediatamente al usuario que permita o no el seguimiento (a menos que ya lo haya hecho).
Si optan por la adhesión voluntaria, ahora se invocará una devolución de llamada de éxito cada vez que se actualice su ubicación.
1
2
3
4
5
6
7
8
9
10
11
12
function success(position) {
var coords = position.coords;
braze.getUser().setLastKnownLocation(
coords.latitude,
coords.longitude,
coords.accuracy,
coords.altitude,
coords.altitudeAccuracy
);
}
navigator.geolocation.watchPosition(success);
Para saber cómo desactivar el seguimiento continuo, consulta la documentación para desarrolladores de Mozilla.