Puoi implementare i tuoi rilevatori di opportunità implementando l'interfaccia PlacementOpportunityDetector (Rilevatore opportunità).
Crea un'istanza AdvertisingFactory
personalizzata e sovrascrivi createOpportunityDetector
. Ad esempio:
new AdvertisingFactory() {
...
@Override
public PlacementOpportunityDetector createOpportunityDetector(MediaPlayerItem item) {
return new CustomPlacementOpportunityDetector();
}
...
}
Registra la Ad Client Factory in MediaPlayer
. Ad esempio:
// register the custom advertising factory with media player
advertisingFactory = createCustomAdvertisingFactory();
mediaPlayer.registerAdClientFactory(advertisingFactory);
Crea una classe di rilevatore di opportunità personalizzata che estende la classe PlacementOpportunityDetector
.
Nel rilevatore di opportunità personalizzato, sovrascrivi questa funzione:
public List<PlacementOpportunity> process(List<TimedMetadata> timedMetadataList, Metadata metadata)
Il timedMetadataList
contiene l'elenco di disponibili TimedMetadata
, ordinato. I metadati contengono i parametri di targeting e i parametri personalizzati da inviare al provider di annunci.
Per ogni TimedMetadata
, crea un List<PlacementOpportunity>
. L’elenco può essere vuoto, ma non nullo. PlacementOpportunity
devono avere i seguenti attributi:
PlacementOpportunity(
String id, // can be id from timedMetadata
PlacementInformation placementInformation // PlacementInformation object containing Type, time, duration
Metadata metadata // ad metadata containing targeting params sent to the ad provider
)
Dopo aver creato opportunità di posizionamento per tutti gli oggetti metadati temporizzati rilevati, è sufficiente restituire l' PlacementOpportunity
elenco.
Questo è un esempio di rilevatore di opportunità di posizionamento personalizzato:
public class CustomPlacementOpportunityDetector implements PlacementOpportunityDetector {
...
@Override
public List<PlacementOpportunity> process(List<TimedMetadata> timedMetadataList, Metadata metadata) {
...
List<PlacementOpportunity> opportunities = new ArrayList<PlacementOpportunity>();
for (TimedMetadata timedMetadata : timedMetadataList) {
if (isOpportunity(timedMetadata)) { // check if given timedMetadata should be
// considered as an opportunity
// create an object of PlacementOpportunity and add it to the opportunities list
PlacementOpportunity opportunity =
createPlacementOpportunity(timedMetadata, airingId, metadata);
Opportunities.add(opportunity);
}
}
return opportunities;
}
...
}