Assista a este vídeo para obter uma visão detalhada do processo de integração. Recomendamos que utilize tanto o vídeo como o guia escrito abaixo.
Antes de começar: Pré-requisitos do SDK
Siga as etapas em Integração de um SDK Singular:Planejamento e pré-requisitos.
Essas etapas são pré-requisitos para qualquer integração do Singular SDK.
Instalar o SDK
O SDK do Singular está disponível como um plug-in para o Flutter. As instruções abaixo mostram como integrar o Singular em seu aplicativo Flutter.
- Este artigo assume que você tem um aplicativo Flutter funcional.
- Para inicializar o SDK, você precisa da sua Chave SDK Singular e do Segredo SDK. Você pode obtê-los na plataforma Singular em"Developer Tools > SDK Integration > SDK Keys".
Para adicionar o plugin Singular Flutter ao seu projeto:
-
Adicione o singular_flutter_sdk: ^1.6.2 ao seu arquivo pubspec.yaml:
dependencies: flutter: sdk: flutter singular_flutter_sdk: ^1.6.2
-
Em seguida, navegue até seu projeto no terminal e execute o seguinte:
flutter packages get
Configurar pré-requisitos
Pré-requisitos do iOS
Para usar o plug-in Singular Flutter, adicione a estrutura AdServices.
-
Adicione o framework AdServices ao seu projeto iOS:
- Navegue até a pasta ios do seu projeto Flutter.
- Abra Runner.xcworkspace no Xcode (use .xcworkspace se você usar CocoaPods, caso contrário, use .xcodeproj).
-
Adicione a estrutura AdServices:
- No Xcode, selecione o destino do seu projeto (por exemplo, "Runner").
- Vá para a guia Geral.
- Role até a seção Frameworks, Bibliotecas e Conteúdo incorporado.
- Clique no botão +.
- Procure por AdServices.framework e adicione-o.
- Defina o status da estrutura como Opcional (para garantir a compatibilidade se a estrutura não estiver disponível em versões mais antigas do iOS).
Pré-requisitos do Android
Adição de permissões e dependências necessárias do Android
Adicione essas permissões sob a tag <manifest> no seu arquivo AndroidManifest.xml:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="BIND_GET_INSTALL_REFERRER_SERVICE" />
<uses-permission android:name="com.android.vending.CHECK_LICENSE" />
<uses-permission android:name="com.google.android.gms.permission.AD_ID" />
Para suportar o referenciador de instalação da Samsung Galaxy Store, adicione o seguinte:
<queries>
<package android:name="com.sec.android.app.samsungapps" />
</queries>
Se tiver desativado as dependências transitivas para o SDK Singular, adicione o seguinte ao seu android/app/build.gradle:
dependencies {
implementation 'com.android.installreferrer:installreferrer:2.2'
implementation 'com.google.android.gms:play-services-appset:16.0.0'
}
Requisitos de configuração se estiver usando o Proguard
Configurando o ProGuard para o Singular SDK no React Native Android
Ao integrar o SDK do Android Singular em seu aplicativo Android Flutter, você deve adicionar regras específicas do ProGuard para garantir que o SDK funcione corretamente em compilações de versão. O ProGuard (ou R8, seu substituto moderno) é usado para otimizar e ofuscar o código. Sem as regras adequadas do ProGuard, o SDK Singular ou suas dependências podem ser removidos ou ofuscados, causando problemas de tempo de execução.
Siga estas etapas para configurar o ProGuard para o SDK Singular:
- Localizar o arquivo de regras do ProGuard: no seu projeto Flutter, navegue até o arquivo android/app/proguard-rules.pro. Esse arquivo contém regras personalizadas do ProGuard para seu aplicativo.
- Adicionar regras do Singular SDK ProGuard: Anexe as seguintes linhas a android/app/proguard-rules.pro para preservar o SDK Singular e suas dependências:
# Preserve Singular SDK classes
-keep class com.singular.sdk.** { *; }
# Preserve Android Install Referrer library
-keep public class com.android.installreferrer.** { *; }
# Uncomment the following line if you are using the Singular 'revenue' function with Google Play Billing Library
#-keep public class com.android.billingclient.** { *; }
Integrar o SDK
Observação: Lembre-se de permanecer em conformidade com as várias leis de privacidade promulgadas nas regiões em que faz negócios, incluindo, mas não se limitando a, GDPR, CCPA e COPPA ao implementar os SDKs Singular. Para obter mais informações, consulte Práticas de aceitação e exclusão de SDK.
O código de inicialização do SDK deve ser chamado sempre que seu aplicativo for aberto. Ele é um pré-requisito para todas as funcionalidades de atribuição do Singular e também envia uma nova sessão de usuário para o Singular. As sessões são usadas para calcular a retenção de usuários.
Importando a biblioteca do Singular
No seu arquivo main.dart, adicione o seguinte código para importar as classes do Singular.
import 'package:singular_flutter_sdk/singular.dart';
import 'package:singular_flutter_sdk/singular_config.dart';
Inicializando o SDK do Singular
O código de inicialização do SDK do Singular deve ser chamado sempre que seu aplicativo for aberto. Ele é um pré-requisito para todas as funcionalidades de atribuição do Singular e também envia uma nova sessão de usuário para o Singular (as sessões são usadas para calcular a retenção de usuários).
O código de inicialização vai para o widget principal do seu aplicativo (ou seja, main.dart) - o primeiro que é carregado quando o aplicativo é aberto. Este widget tem de ter estado e o código tem de ser adicionado no método initState() do widget.
- Crie um objeto SingularConfig. O objeto contém a sua Chave SDK e o Segredo SDK (obtenha a Chave e o Segredo iniciando sessão na sua conta Singular e navegando para"Ferramentas de Programador > Integração SDK > Chaves SDK").
-
Opcionalmente, adicione vários métodos de configuração para definir ou ativar vários recursos do SDK.
- Em seguida, use o métodostart para inicializar o SDK, passando o objeto SingularConfig objeto.
- Atualize sua classe _MyHomePageState em main.dart para incluir o código de inicialização.
Exemplo de um main.dart modificado:
import 'package:singular_flutter_sdk/singular.dart';
import 'package:singular_flutter_sdk/singular_config.dart';
//...
class MyHomePage extends StatefulWidget {
//...
}
class _MyHomePageState extends State<MyHomePage> {
//...
@override
void initState() {
super.initState();
//...
SingularConfig config = new SingularConfig('SDK KEY', 'SDK SECRET');
// Enable Logging for testing
config.logLevel = 3;
config.enableLogging = true;
// Set hashed User ID if available
config.customUserId = "b642b4217b34b1e8d3bd915fc65c4452";
// For iOS (Remove this if you are not displaying an ATT prompt)!
config.waitForTrackingAuthorizationWithTimeoutInterval = 300;
// To enable SkAdNetwork Support
config.skAdNetworkEnabled = true;
// To enable META Install Referrer
config.facebookAppId = "INSERT YOUR FACEBOOK APP ID HERE";
// (optional) Using Singular Global Properties feature to capture
// third party identifiers. The respective SDK(s) must be initialized
// before the Singular SDK. Example of passing the CleverTapID.
// var cleverTapId = CleverTapPlugin.getCleverTapID();
// config.withGlobalProperty("CLEVERTAPID", cleverTapId, true);
Singular.start(config);
}