Docs du SDK
Intégrez le SDK Android d'Appaloo à votre application et diffusez vos annonces en quelques lignes de code.
Intégrez le SDK iOS d'Appaloo à votre application et diffusez vos annonces en quelques lignes de code.
1. Installation
Ajoutez le SDK Appaloo à votre projet Android depuis notre dépôt Maven. Il est fourni sous forme d'AAR précompilé et cible l'API Android 30+.
settings.gradle.kts
dependencyResolutionManagement {
repositories {
google()
mavenCentral()
maven { url = uri("https://static.appaloo.io/appaloo/sdk/android") }
}
}
app/build.gradle.kts
dependencies {
implementation("io.appaloo:sdk:0.0.1")
}
settings.gradle
dependencyResolutionManagement {
repositories {
google()
mavenCentral()
maven { url 'https://static.appaloo.io/appaloo/sdk/android' }
}
}
app/build.gradle
dependencies {
implementation 'io.appaloo:sdk:0.0.1'
}
2. Initialisation
Construisez un AppalooClient avec l'UUID de votre annonce. Le client est peu coûteux à créer. Instanciez-en un par point d'appel, ou conservez-en un comme champ de votre activité.
import com.appaloo.AppalooClient
private val appaloo = AppalooClient(
adId = "{adID}",
)
import com.appaloo.AppalooClient;
private final AppalooClient appaloo = new AppalooClient("{adID}");
3. Charger une annonce
Utilisez loadInterstitial pour les annonces interstitielles et loadRewarded pour les annonces récompensées. Appeler la mauvaise méthode pour le type d'une annonce échoue avec ERROR_NOT_INTERSTITIAL ou ERROR_NOT_REWARDED.
Annonces interstitielles
Récupère le manifeste, choisit un candidat et présente une boîte de dialogue interstitielle en plein écran. L'utilisateur peut la fermer après un compte à rebours de 15 secondes (ou à la fin de la vidéo intégrée).
import com.appaloo.AppalooClient
import com.appaloo.AdDetails
import com.appaloo.InterstitialCallbacks
class MainActivity : AppCompatActivity() {
private val appaloo = AppalooClient("{adID}")
private fun showAd() {
appaloo.loadInterstitial(this, object : InterstitialCallbacks {
override fun onAdLoaded(adDetails: AdDetails) {
Log.d("Appaloo", "Showing ad for ${adDetails.appName}")
}
override fun onAdLoadFailed(errorCode: Int, message: String) {
Log.w("Appaloo", "Ad failed: $errorCode - $message")
}
})
}
}
import com.appaloo.AppalooClient;
import com.appaloo.AdDetails;
import com.appaloo.InterstitialCallbacks;
public class MainActivity extends AppCompatActivity {
private final AppalooClient appaloo =
new AppalooClient("{adID}", "https://appaloo.io");
private void showAd() {
appaloo.loadInterstitial(this, new InterstitialCallbacks() {
@Override
public void onAdLoaded(AdDetails adDetails) {
Log.d("Appaloo", "Showing ad for " + adDetails.getAppName());
}
@Override
public void onAdLoadFailed(int errorCode, String message) {
Log.w("Appaloo", "Ad failed: " + errorCode + " - " + message);
}
});
}
}
Annonces récompensées
Même déroulement que loadInterstitial, mais le SDK n'invoque onAdFinished qu'après que l'utilisateur a entièrement visionné l'annonce. Conditionnez votre récompense à ce callback.
import com.appaloo.AppalooClient
import com.appaloo.AdDetails
import com.appaloo.RewardedCallbacks
class GameActivity : AppCompatActivity() {
private val appaloo = AppalooClient("{adID}")
private fun grantBonusLife() {
appaloo.loadRewarded(this, object : RewardedCallbacks {
override fun onAdLoaded(adDetails: AdDetails) {
// Ad is on screen; do not credit yet.
}
override fun onAdFinished(adDetails: AdDetails) {
// User finished watching: credit the reward here.
player.lives += 1
}
override fun onAdLoadFailed(errorCode: Int, message: String) {
Log.w("Appaloo", "Reward unavailable ($errorCode)")
}
})
}
}
import com.appaloo.AppalooClient;
import com.appaloo.AdDetails;
import com.appaloo.RewardedCallbacks;
public class GameActivity extends AppCompatActivity {
private final AppalooClient appaloo =
new AppalooClient("{adID}", "https://appaloo.io");
private void grantBonusLife() {
appaloo.loadRewarded(this, new RewardedCallbacks() {
@Override
public void onAdLoaded(AdDetails adDetails) {
// Ad is on screen; do not credit yet.
}
@Override
public void onAdFinished(AdDetails adDetails) {
// User finished watching: credit the reward here.
player.lives += 1;
}
@Override
public void onAdLoadFailed(int errorCode, String message) {
Log.w("Appaloo", "Reward unavailable (" + errorCode + ")");
}
});
}
}
4. Callbacks
Tous les callbacks sont exécutés sur le thread principal, vous pouvez donc mettre à jour l'interface directement depuis ceux-ci.
InterstitialCallbacks
interface InterstitialCallbacks {
fun onAdLoaded(adDetails: AdDetails)
fun onAdLoadFailed(errorCode: Int, message: String)
}
public interface InterstitialCallbacks {
void onAdLoaded(AdDetails adDetails);
void onAdLoadFailed(int errorCode, String message);
}
RewardedCallbacks
interface RewardedCallbacks {
fun onAdLoaded(adDetails: AdDetails)
fun onAdFinished(adDetails: AdDetails)
fun onAdLoadFailed(errorCode: Int, message: String)
}
public interface RewardedCallbacks {
void onAdLoaded(AdDetails adDetails);
void onAdFinished(AdDetails adDetails);
void onAdLoadFailed(int errorCode, String message);
}
Important : n'accordez la récompense qu'à l'intérieur de onAdFinished. onAdLoaded se déclenche dès que l'annonce est affichée, avant que l'utilisateur ne l'ait regardée.
5. Sécurité des données
Le SDK ne collecte aucun identifiant publicitaire ni identifiant d'appareil. Les seules données qu'il transmet sont les annonces qu'un utilisateur voit ou sur lesquelles il clique, ce qui garde votre formulaire de sécurité des données Google Play très court.
Ce qu'il faut déclarer
Déclarez les événements d'affichage et de clic sur les annonces sous Activité de l'application (Interactions dans l'application) : collectés, chiffrés en transit et non liés à un identifiant persistant. Choisissez Fonctionnalité de l'application et/ou Publicité comme finalité, selon la façon dont vous décrivez Appaloo.
Ce que le SDK ne collecte pas
Aucun identifiant publicitaire Google (AAID), aucun ANDROID_ID, aucune information sur l'appareil ni aucune localisation. Le SDK ne demande que l'autorisation INTERNET. N'ajoutez pas l'autorisation AD_ID en son nom.
1. Installation
Le SDK Appaloo est fourni sous forme de XCFramework précompilé, à somme de contrôle épinglée, servi directement depuis notre CDN. Rien à compiler, aucun compte, aucun jeton, aucun hébergeur git. Il cible iOS 15+ et ne dépend que des frameworks système (UIKit, WebKit).
Xcode (Ajouter un package local)
Déposez ce package Swift d'un seul fichier dans votre projet, puis dans Xcode choisissez File → Add Package Dependencies → Add Local… et sélectionnez le dossier. Xcode télécharge et vérifie le binaire depuis le CDN.
mkdir AppalooSDK && curl -fsSL \
https://static.appaloo.io/appaloo/sdk/ios/AppalooSDK/Package.swift \
-o AppalooSDK/Package.swift
Package.swift
Ou, si votre application est elle-même un package Swift, déclarez directement la cible binaire :
targets: [
.binaryTarget(
name: "AppalooSDK",
url: "https://appaloo.nyc3.digitaloceanspaces.com/appaloo/sdk/ios/AppalooSDK-0.1.1.xcframework.zip",
checksum: "e0dc8f262263d079b6cb21bd8d4e958407fc9e749fcb6cb0e8ec192afb334a84"
),
.target(name: "MyApp", dependencies: ["AppalooSDK"]),
]
2. Initialisation
Construisez un AppalooClient avec l'UUID de votre annonce. Bien que le client soit léger en ressources, il est préférable d'en conserver une référence durable en tant que propriété de votre view controller.
import AppalooSDK
private let appaloo = AppalooClient(adId: "{adID}")
3. Charger une annonce
Utilisez loadInterstitial pour les annonces interstitielles et loadRewarded pour les annonces récompensées. Appeler la mauvaise méthode pour le type d'une annonce échoue avec errorNotInterstitial ou errorNotRewarded.
Les deux méthodes de chargement prennent un UIViewController présentateur, et le SDK affiche l'annonce en plein écran par-dessus (modalPresentationStyle = .fullScreen, isModalInPresentation = true).
Annonces interstitielles
Présente une annonce à l'utilisateur. Il peut la fermer après un compte à rebours de 15 secondes (ou à la fin d'une vidéo intégrée).
import UIKit
import AppalooSDK
final class MainViewController: UIViewController, InterstitialCallbacks {
private let appaloo = AppalooClient(adId: "{adID}")
private func showAd() {
appaloo.loadInterstitial(from: self, callbacks: self)
}
func onAdLoaded(adDetails: AdDetails) {
print("Showing ad for \(adDetails.appName)")
}
func onAdLoadFailed(errorCode: Int, message: String) {
print("Ad failed: \(errorCode) - \(message)")
}
}
Annonces récompensées
Même déroulement que loadInterstitial, mais onAdFinished ne se déclenche qu'après que l'utilisateur a entièrement visionné l'annonce. Vous devez alors accorder la récompense à l'utilisateur.
import UIKit
import AppalooSDK
final class GameViewController: UIViewController, RewardedCallbacks {
private let appaloo = AppalooClient(adId: "{adID}")
private func grantBonusLife() {
appaloo.loadRewarded(from: self, callbacks: self)
}
func onAdLoaded(adDetails: AdDetails) {
// Ad is on screen; do not credit yet.
}
func onAdFinished(adDetails: AdDetails) {
// User finished watching: credit the reward here.
player.lives += 1
}
func onAdLoadFailed(errorCode: Int, message: String) {
print("Reward unavailable (\(errorCode))")
}
}
4. Callbacks
Les callbacks sont des protocoles réservés aux classes (AnyObject). Le SDK ne conserve votre objet de callbacks que pendant la durée du chargement. Gardez votre propre référence forte (par ex. comme propriété stockée) au moins jusqu'à ce que onAdFinished ou onAdLoadFailed se déclenche. Tous les callbacks sont invoqués sur le thread principal.
InterstitialCallbacks
public protocol InterstitialCallbacks: AnyObject {
func onAdLoaded(adDetails: AdDetails)
func onAdLoadFailed(errorCode: Int, message: String)
}
RewardedCallbacks
public protocol RewardedCallbacks: AnyObject {
func onAdLoaded(adDetails: AdDetails)
func onAdFinished(adDetails: AdDetails)
func onAdLoadFailed(errorCode: Int, message: String)
}
Important : n'accordez la récompense qu'à l'intérieur de onAdFinished. onAdLoaded se déclenche dès que l'annonce est affichée, avant que l'utilisateur ne l'ait regardée.
5. Sécurité des données
Le SDK ne collecte aucun IDFA ni identifiant d'appareil. Les seules données qu'il transmet sont les annonces qu'un utilisateur voit ou sur lesquelles il clique, et comme il ne porte aucun identifiant inter-applications, il ne nécessite pas d'invite App Tracking Transparency.
Étiquette de confidentialité de l'app
Déclarez les Données publicitaires sous Données non liées à vous, marquées Non utilisées pour le suivi. C'est tout ce que le SDK transmet.
English
Español
Deutsch