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 aspetto dell'annuncio per allinearsi meglio all'interfaccia utente dell'applicazione: l'aggiunta un filtro colore, modificare elementi tipografici e aggiungere overlay personalizzati. Per ottimizzare il rendimento o l'esperienza utente degli annunci nativi, i publisher spesso impostano annunci display limita la riproduzione dei video nell'SDK. Infine, gli editori possono personalizzare i listener dei clic sugli annunci per monitorare eventi aggiuntivi come i gesti di scorrimento verso l'alto.
Il formato degli annunci nativi richiede un livello di attendibilità del publisher superiore rispetto a quello necessario per la visualizzazione di altri formati degli annunci. In genere gli SDK vogliono rilevare criteri violazioni e per verificare che i contenuti dell'annuncio mostrati al publisher siano stati mostrati a per l'utente.
Il supporto degli annunci banner in SDK Runtime viene ottenuto tramite l'API SurfaceControlViewHost
. Consente all'SDK di mostrare l'interfaccia utente
del processo SDK Runtime senza che venga manomesso dal
un'applicazione client. Utilizza le modalità SurfaceView Z sopra o Z sotto per determinare
se la superficie in cui viene eseguito il rendering dell'UI dell'SDK è sopra o sotto il client
finestra dell'applicazione. 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 sull'annuncio. Quando un annuncio viene visualizzato in modalità Z sotto,
applicazione mostra le proprie visualizzazioni sopra l'annuncio, ma MotionEvents
dall'utente
l'interazione con l'annuncio indirizza all'applicazione, non all'SDK.
Le librerie Jetpack privacysandbox.ui possono essere utilizzate dall'SDK e dal publisher per stabilire e mantenere una sessione dell'interfaccia utente.
Container degli annunci di proprietà dell'app
Abbiamo creato un prototipo che consentiva all'SDK di possedere tutte le visualizzazioni che compongono un annuncio nativo (inclusi gli overlay dell'applicazione) e abbiamo riscontrato che, sebbene fattibile, imponeva alcune limitazioni all'interfaccia utente e aumentava la complessità dell'integrazione con l'SDK. Un altro
l'approccio pragmatico consiste nel lasciare che l'applicazione possieda il maggior numero di opinioni. L'SDK può comunque
scegliere di mostrare alcune UI, come la visualizzazione dell'annuncio, utilizzando SandboxedSdkView
da privacysandbox.ui. Questo approccio offre la massima flessibilità per quanto riguarda il supporto dei casi d'uso esistenti e futuri per questo formato dell'annuncio: con questo approccio, lo sviluppatore di app può spostare i componenti dell'annuncio e personalizzarli in base alle esigenze, mentre l'SDK mantiene la proprietà del video player, se preferisci, e l'accesso ai controlli multimediali.
Notifiche sullo stato dell'annuncio
SDK diversi esaminano proprietà diverse delle visualizzazioni degli annunci per il rilevamento delle attività fraudolente e delle violazioni delle norme. Vorremmo supportare questa funzionalità senza prescrivere quali proprietà utilizzare o diventare il collo di bottiglia per l'SDK modificando l'insieme di proprietà sottoposte a query. Proponiamo di creare una rappresentazione del contenitore di annunci,
e le relative viste secondarie, utilizzando NativeAdContainerInfo
. Questa sarà una particella
con vari getter che mostrano informazioni limitate al contenitore degli annunci
i suoi contenuti, laddove tali informazioni siano incentrate sulla tutela della privacy e non costose
per il computing. L'SDK potrà attivare le categorie di indicatori inclusi in
NativeAdContainerInfo
. L'SDK riceve questo oggetto ogni volta che lo stato dell'annuncio cambia in modo pertinente per l'SDK, ad esempio in caso di eventi fatturabili come le impressioni degli annunci 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 inoltra all'SDK il
MotionEvent
con le proprietà tradotte nello spazio delle coordinate dell'SDK, insieme al MotionEvent originale. Per le versioni future di Android, stiamo esplorando la possibilità di aggiungere modi per consentire all'applicazione client di trasferire l'attenzione tocco per tutti i gesti dell'utente sulle parti di questo annuncio nativo di proprietà dell'SDK in modo che vengano gestite dall'SDK.
Attestazione
Per l'SDK saranno disponibili le seguenti attestazioni per garantire maggiore sicurezza sulla presentazione degli annunci:
- Attestazione dell'integrità del dispositivo: usa API della piattaforma come Chiave Attestazione per determinare l'integrità del dispositivo.
- Identità APK: utilizza le API SdkSandbox come
SdkSandboxController.getClientPackageName
e le API PackageManager comerequestChecksum
per verificare l'identità dell'APK. VerifiedMotionEvents
: nelle versioni future di Android, stiamo esplorando consente all'applicazione client di trasferire il focus touch per tutti gli utenti I gesti che l'SDK gestisce nelle parti di proprietà dell'SDK di questo annuncio nativo.MotionEvents
può essere convertito inVerifiedMotionEvents
utilizzando le API di sistema. L'SDK può mostrare la propria UI in risposta all'interazione dell'utente, se lo sceglie.
Domande aperte
Ti invitiamo a inviare un feedback sui seguenti punti:
- È preferibile che l'SDK generi personalmente
VerifiedMotionEvents
? o che la libreria dell'UI del provider lo faccia per l'SDK? - È preferibile che l'SDK consenta al publisher di possedere le visualizzazioni contenenti video o di possedere queste visualizzazioni?
- Quali strutture vorresti vedere incluse nel
AppOwnedAdContainerInfo
oggetto? - Quanti annunci o componenti degli annunci di proprietà dell'SDK ti aspetti che vengano mostrati con lo stesso tempo sullo schermo?