The purpose of this manual is to provide all of the information necessary to install and use the tools in the apps developed for the Android platform.
This SDK is written in Java, it gathers device data (information and location) and sends it to ClearSale. The data gathered will be related solely to the device and is unrelated to the integrated app.
Geolocation data depends on permission granted by the device user. This means the app must request access to user location data (the SDK does not ask for permission). If the app does not request access or if the user denies permission the data will not be gathered.
SDK respects Apple's privacy policy in terms of gathering device data and the level of permission granted by the device user.
The pod is available in a private repository, using it requires adding the following repository to the root file:
maven {
url 'https://pkgs.dev.azure.com/vstscs/Produtos-Agile/_packaging/BehaviorAnalytics.SDK/maven/v1'
name 'BehaviorAnalytics.SDK.Android'
credentials {
username "vstscs"
password TOKEN_DE_ACESSO
}
}
A request for an access token must be sent to ClearSale.
O pacote está disponível em um repositório maven privado, e para sua utilização é necessário adicionar ao arquivo gradle raiz:
maven {
url 'https://pkgs.dev.azure.com/vstscs/Produtos-Agile/_packaging/BehaviorAnalytics.SDK/maven/v1'
name 'BehaviorAnalytics.SDK.Android'
credentials {
username "vstscs"
password TOKEN_DE_ACESSO
}
}
É necessário solicitar o token de acesso junto à ClearSale.
The following dependences must be used in the project: play-services-location, play-services-ads, gson. For this, add the following information to the dependencies section of the Gradle file.
dependencies {
// Other project dependencies.
//...
// Required dependencies
implementation 'com.google.android.gms:play-services-ads:18.3.0'
api 'com.google.code.gson:gson:2.8.6'
implementation 'sale.clear.behavior:sdk-behavior:3.0.2'
// Optional dependencies
api 'com.google.android.gms:play-services-location:17.0.0'
}
We recommend Gradle 5.4.1, Android Studio 3.5.1 and plugin 3.5.1.
Using SDK requires asking for the following permissions in the manifest file:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
Apps using Android version 26 or higher as the Target and that wish to capture geolocation data must not only add ACCESS_FINE_LOCATION and ACCESS_COARSE_LOCATION to the manifest, but also ask for user permission to gather geolocation data, as per the Android recommendation.
É necessário utilizar as seguintes dependências no seu projeto: play-services-location, play-services-ads, gson. Para isso adicione no arquivo Gradle do seu projeto, na seção de dependências, as seguintes informações.
dependencies {
// Demais dependências do seu projeto.
//...
// Dependências Obrigatórias:
implementation 'com.google.android.gms:play-services-ads:19.4.0'
api 'com.google.code.gson:gson:2.8.6'
implementation 'sale.clear.behavior:sdk-behavior:4.0.0-rc.1'
// Dependências Optativas:
api 'com.google.android.gms:play-services-location:17.0.0'
}
Recomendamos o uso do Gradle 6.6.1, do Android Studio 4.1.rc.3 e plugin 4.1.rc.3.
Para o uso do sdk é necessário requisitar algumas permissões no arquivo de manifesto, são elas:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
Para aplicações que utilizem como Target a versão 26 ou superior do Android, e que desejem capturar informações de geolocalização, é necessário, além de adicionar no manifest as permissões ACCESS_FINE_LOCATION e ACCESS_COARSE_LOCATION, solicitar permissão ao usuário para coletar dados de geolocalização, seguindo esta recomendação do Android.
Behavioris the class responsible for data gathering.
This class has no public builders. The instance must be made using a static method.
Method name | Description |
---|---|
Behavior.getInstance(String app) :Behavior | Obtain the Behavior class instance for an AppKey. The AppKey (provided by ClearSale) must be given as a parameter. |
Method name | Description |
---|---|
generateSessionID() :String | Generates and returns a session identifier. This method is to be used only if the app has no session value. This value must be stored and sent to ClearSale at the moment of request [order] integration. |
collectDeviceInformation(String sessionID) :void | Gathers data on the device linked to the Session value. SessionId, the session value must be provided as a parameter. This value must be stored and sent to ClearSale at the moment or request [order] integration. (*) If that SessionID has no unique value use). generateSessionId(). (**) The maximum size of SessionID is 128 characters. Exceptions:
|
start() :void | IInitiates the collection of data on the device and screen. Exceptions:
|
stop() :void | Ends the data capture process. |
Behavior é a classe responsável pela coleta das informações.
Esta classe não possui construtores públicos. A instância deverá ser feita através de um método estático.
Nome do método | Descrição |
---|---|
Behavior.getInstance(String app) :Behavior | Obtém a instância da classe Behavior para um AppKey. É necessário passar como parâmetro o AppKey (valor fornecido pela ClearSale). |
Nome do método | Descrição |
---|---|
generateSessionID() :String | Gera e retorna um identificador de sessão. Este método deve ser utilizado somente se a aplicação não tiver nenhum valor para sessão. Este valor deve ser armazenado e enviado para a ClearSale no momento da integração da trasação. |
collectDeviceInformation(String SessionId) :void | Realiza a coleta das informações do dispositivo vinculando ao valor de Sessão. É necessário passar como parâmetro o SessionId, valor de sessão. Este valor deve ser armazenado e enviado para a ClearSale no momento da integração do transação. Observações:
|
There are two ways to initialize the SDK. This depends on the type of screen to be used. If it is an Activity screen, initialization must use the onCreate() approach. If it is a Fragment screen, initialization must use the onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) approach
Note: In both cases (Activity or Fragment), if the stop() approach is not called within the onStop() method of one of the screens because it is a singleton, when start() is called on the next screen a CaptureWasStartedException exception will be launched.
All examples presume the existence of the following variables:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// To obtain the Context in a Fragment.
View rootView = inflater.inflate(R.layout.fragment_login, container, false);
Context context = rootView.getContext();
//CLEAR_SALE_APP is a value to be provided by ClearSale.
mBehavior = Behavior.getInstance(mContext, CLEAR_SALE_APP);
return rootView;
}
@Override
public void onCreate() {
//CLEAR_SALE_APP is a value to be provided by ClearSale.
mBehavior = Behavior.getInstance(this, CLEAR_SALE_APP);
}
Use thestart() e stop() approaches for all screens. Use collectDeviceInformation(SESSION_ID) only when you want to send the collected data to ClearSale.
@Override
public void onResume() {
super.onResume();
try {
mBehavior.start();
//Only on the screens where the data gathered will be sent to ClearSale
String sessionId = mBehavior.generateSessionID()
mBehavior.BehaviorcollectDeviceInformation(sessionId);
}
catch (CaptureWasStartedException e) {
//This indicates that the startCapture approach was called up previously and not
//the stopCapture() approach was called up in the onStop() approach.
Log.e(LOG_TAG, e.getMessage());
}catch (SessionIDAlreadyUsedException e) {
//The same SessionID was used before.
Log.e(LOG_TAG, e.getMessage());
}
}
@Override
public void onStop() {
super.onStop();
mBehavior.stop();
}
Existem duas formas de inicializar o SDK. Isso depende do tipo de tela que será utilizada. Caso a tela seja uma Activity, a inicialização deve ser feita no método onCreate(). Caso seja um Fragment, a inicialização deve ser feita no método onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
Em todos os exemplos se assume a existência das seguintes variáveis:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Para obter o Context em um Fragment.
View rootView = inflater.inflate(R.layout.fragment_login, container, false);
Context context = rootView.getContext();
//CLEAR_SALE_APP é um valor que deve ser fornecido pela ClearSale.
mBehavior = Behavior.getInstance(mContext, CLEAR_SALE_APP);
return rootView;
}
@Override
public void onCreate() {
//CLEAR_SALE_APP é um valor que deve ser fornecido pela ClearSale.
mBehavior = Behavior.getInstance(this, CLEAR_SALE_APP);
}
Para coletar e enviar os dados para a ClearSale deve-se chamar o metodo collectDeviceInformation(SESSION_ID) dentro do metodo onResume()
@Override
public void onResume() {
super.onResume();
try {
//Apenas nas telas que se deseja enviar os dados coletados para a ClearSale
String SessionId = mBehavior.generateSessionID()
mBehavior.collectDeviceInformation(SessionId);
}
catch (InvalidSessionIdException e) {
// Indica que foi usado um valor inválido para o SessionId.
Log.e(LOG_TAG, e.getMessage());
}catch (SessionIdAlreadyUsedException e) {
//O mesmo SessionId foi usado anteriormente.
Log.e(LOG_TAG, e.getMessage());
}
}
By downloading and using our SDK you are agreeing to the following license.
Copyright © 2021 ClearSale
All rights reserved. This license grants permission to use the software "as is". The software may not be modified or copied for any purpose. The Software is licensed as configured and with absolutely no expressed or implicit guarantee, including but not limited to marketing guarantees, suitability for specific purposes and non-violation of patented rights. Under no circumstances may the owners of the Copyright be held liable for damages, losses, basis for lawsuits due to contract or illegal acts or any other illegal means arising from the use of the Software or other actions related to this Software without the prior written authorization of the copyright holders.