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.
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:
- Attestazione dell'integrità del dispositivo: utilizza API della piattaforma come Key Attestation per determinare l'integrità del dispositivo.
- Identità APK: utilizza le API SdkSandbox come
SdkSandboxController.getClientPackageNamee le API PackageManager comerequestChecksumper verificare l'identità dell'APK. 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.MotionEventspuò essere convertito inVerifiedMotionEventsutilizzando le API di sistema. L'SDK può mostrare la propria UI in risposta all'interazione dell'utente, se lo desidera.
Domande aperte
- È preferibile che l'SDK generi
VerifiedMotionEventsautonomamente o che la libreria UI del fornitore lo faccia per l'SDK? - È preferibile che l'SDK consenta al publisher di possedere le visualizzazioni contenenti video o di possederle direttamente?
- Quali proprietà vorresti includere nell'oggetto
AppOwnedAdContainerInfo? - Quanti annunci o componenti annuncio di proprietà dell'SDK prevedi di mostrare contemporaneamente sullo schermo?