Annunci nativi su Android

Il formato degli annunci nativi consente al publisher di personalizzare un annuncio mostrato a un utente. Dopo aver recuperato un annuncio dall'SDK, i publisher possono modificare il layout e l'aspetto dell'annuncio per allinearlo meglio all'interfaccia utente dell'applicazione: aggiungendo un filtro colore, modificando la tipografia e aggiungendo overlay personalizzati. Per ottimizzare le prestazioni o l'esperienza utente degli annunci nativi, i publisher spesso impostano limiti di visualizzazione o scaricano la riproduzione video sull'SDK. Infine, i publisher possono personalizzare i listener di clic sugli annunci per monitorare eventi aggiuntivi come gli scorrimenti verso l'alto.

Il formato degli annunci nativi richiede un livello di fiducia più elevato nel publisher rispetto a quello necessario per la visualizzazione di altri formati degli annunci. In genere, gli SDK vogliono rilevare le violazioni delle norme e verificare che i contenuti dell'annuncio forniti all'editore siano stati mostrati all'utente.

Il supporto degli annunci banner in SDK Runtime viene ottenuto tramite l'API SurfaceControlViewHost. In questo modo, l'SDK può mostrare gli elementi dell'interfaccia utente dal processo SDK Runtime senza che vengano manomessi dall'applicazione client. Utilizza le modalità SurfaceView Z sopra o Z sotto per determinare se la superficie in cui viene visualizzata l'interfaccia utente dell'SDK si trova sopra o sotto la finestra dell'applicazione client. Quando un annuncio viene visualizzato utilizzando la modalità Z sopra, l'SDK riceve MotionEvents dall'interazione dell'utente, ma le visualizzazioni dell'applicazione client non sono visibili sopra l'annuncio. Quando un annuncio viene visualizzato in modalità Z sotto, l'applicazione mostra le proprie visualizzazioni sopra l'annuncio, ma MotionEvents dall'interazione dell'utente sull'annuncio vanno all'applicazione, non all'SDK.

Le librerie Jetpack privacysandbox.ui possono essere utilizzate dall'SDK e dall'editore per stabilire e mantenere una sessione UI.

Container di annunci di proprietà dell'app

Abbiamo creato un prototipo che consente all'SDK di possedere tutte le visualizzazioni che compongono un annuncio nativo (inclusi gli overlay dell'applicazione) e abbiamo scoperto che, sebbene fattibile, impone alcune limitazioni all'interfaccia utente e aumenta la complessità dell'integrazione con l'SDK. Un approccio più pragmatico consiste nel lasciare che l'applicazione possieda la maggior parte delle visualizzazioni. L'SDK può comunque scegliere di mostrare alcune UI, ad esempio la visualizzazione dell'annuncio, utilizzando SandboxedSdkView da privacysandbox.ui. Questo approccio offre la massima flessibilità nel modo in cui vengono supportati i casi d'uso esistenti e futuri per questo formato annuncio: con questo approccio, lo sviluppatore dell'app può spostare i componenti dell'annuncio e applicare lo stile che preferisce, mentre l'SDK mantiene la proprietà del video player, se preferito, e mantiene l'accesso ai controlli multimediali.

Diagramma che mostra il flusso di dati tra il publisher e l'SDK.
Flusso di controllo degli annunci nativi proposto.

Notifiche sullo stato dell'annuncio

SDK diversi esaminano proprietà diverse delle visualizzazioni di annunci per il rilevamento di frodi e violazioni delle norme. Vorremmo supportare questa funzionalità senza prescrivere quali proprietà utilizzare o diventare il collo di bottiglia per l'SDK che modifica l'insieme di proprietà sottoposte a query. Proponiamo di creare una rappresentazione del contenitore dell'annuncio e delle relative visualizzazioni secondarie utilizzando NativeAdContainerInfo. Si tratta di un oggetto trasferibile con vari metodi getter che espongono informazioni limitate al contenitore dell'annuncio e ai relativi contenuti, dove queste informazioni rispettano la privacy e non sono costose da calcolare. L'SDK potrà attivare le categorie di indicatori incluse in NativeAdContainerInfo. L'SDK riceverebbe questo oggetto ogni volta che lo stato dell'annuncio cambia in modi pertinenti per l'SDK, ad esempio eventi fatturabili come l'impressione dell'annuncio e i clic degli utenti.`

Inoltre, il publisher potrà aggiungere tag specifici per la visualizzazione (stringhe) a ogni elemento secondario aggiunto a NativeAdContainer, che possono essere utilizzati per comunicare all'SDK a quale asset annuncio corrisponde ogni elemento secondario.

Quando l'utente fa clic sulle visualizzazioni di proprietà dell'SDK, la libreria UI inoltrerà l'evento MotionEvent con le proprietà tradotte nello spazio delle coordinate dell'SDK all'SDK, insieme all'evento MotionEvent originale. Per le versioni future di Android, stiamo valutando la possibilità di aggiungere modi per consentire all'applicazione client di trasferire lo stato attivo del tocco per tutti i gesti dell'utente nelle parti di questo annuncio nativo di proprietà dell'SDK da gestire dall'SDK.

Attestazione

Per ottenere maggiori garanzie sulla presentazione degli annunci, l'SDK avrà a disposizione le seguenti attestazioni:

  1. Attestazione dell'integrità del dispositivo: utilizza API della piattaforma come Key Attestation per determinare l'integrità del dispositivo.
  2. Identità APK: utilizza le API SdkSandbox come SdkSandboxController.getClientPackageName e le API PackageManager come requestChecksum per verificare l'identità dell'APK.
  3. VerifiedMotionEvents: nelle versioni future di Android, stiamo valutando la possibilità di consentire all'applicazione client di trasferire il focus del tocco per tutti i gesti dell'utente sulle parti di questo annuncio nativo di proprietà dell'SDK, in modo che vengano gestiti dall'SDK. MotionEvents può essere convertito in VerifiedMotionEvents utilizzando le API di sistema. L'SDK può mostrare la propria UI in risposta all'interazione dell'utente, se lo desidera.

Domande aperte

  1. È preferibile che l'SDK generi VerifiedMotionEvents autonomamente o che la libreria UI del fornitore lo faccia per l'SDK?
  2. È preferibile che l'SDK consenta al publisher di possedere le visualizzazioni contenenti video o di possederle direttamente?
  3. Quali proprietà vorresti includere nell'oggetto AppOwnedAdContainerInfo?
  4. Quanti annunci o componenti annuncio di proprietà dell'SDK prevedi di mostrare contemporaneamente sullo schermo?