Estas são algumas informações sobre a medição de vídeos no iOS usando a medição de vídeos por etapas.
Durante a reprodução do vídeo, chamadas "heartbeat" frequentes são enviadas a esse serviço para medir o tempo reproduzido. Essas chamadas de heartbeat são enviadas a cada 10 segundos, o que resulta em métricas granulares de envolvimento com o vídeo e relatórios de repercussão de vídeo mais precisos. Para obter mais informações, consulte Avaliação de mídia de streaming no Adobe Analytics.
O processo geral para medição de vídeo é bem parecido em todas as plataformas. Este conteúdo oferece uma visão geral das tarefas do desenvolvedor com amostras de código.
A tabela a seguir lista os dados de mídia que são enviados para o Analytics. Usar as regras de processamento para mapear os dados de contexto para uma variável do Analytics.
a.media.name
(Obrigatório) Coleta o nome do vídeo, conforme especificado na implementação, quando um visitante exibe o vídeo. É possível adicionar classificações para essa variável.
(Opcional) A variável Insight personalizado fornece informações de definição de caminho de vídeo.
a.media.name
(Opcional) Fornece informações sobre o caminho do vídeo. O caminho deve ser habilitado para esta variável pelo Atendimento ao cliente.
a.media.segment
(Obrigatório) Coleta dados de segmento do vídeo, incluindo o nome do segmento e a ordem na qual ele ocorre no vídeo. Essa variável é preenchida com a habilitação da variável segmentByMilestones
durante o monitoramento de eventos de player de modo automático, ou ao configurar um nome de segmento personalizado durante o monitoramento manual dos eventos do player. Por exemplo, quando um visitante exibe o primeiro segmento em um vídeo, o SiteCatalyst pode coletar as seguintes informações na 1:M:0-25
eVar de segmentos.
O método padrão de coleta de dados de vídeo coleta dados nos seguintes pontos:
O Analytics conta a primeira visualização de segmento no início do segmento, quando o visitante começa a assistir. As visualizações de segmento subsequentes ocorrem conforme o segmento começa.
a.contentType
Coleta dados sobre o tipo de conteúdo que é visualizado por um visitante. Ocorrências enviadas por avaliação de vídeo recebem um tipo de conteúdo de video
. Essa variável não precisa ser reservada exclusivamente para rastreamento de vídeo. Quando outros conteúdos relatam os tipos de conteúdo por meio da mesma variável, é possível analisar a distribuição de visitantes nesses tipos diferentes. Por exemplo, é possível marcar outros tipos de conteúdo por meio de valores como "artigo" ou "página do produto" com essa variável. Da perspectiva da avaliação de vídeo, o Tipo de conteúdo permite identificar os visitantes e calcular as taxas de conversão do vídeo.
a.media.timePlayed
Contabiliza o tempo, em segundos, que é gasto com a exibição de um vídeo desde o último processo de coleta de dados (solicitação da imagem).
a.media.view
Indica que um visitante visualizou uma parte de um de vídeo. No entanto, não fornece informações sobre quanto ou qual parte de um vídeo o visitante visualizou.
a.media.segmentView
Indica que um visitante visualizou uma parte de um segmento de vídeo. No entanto, não fornece informações sobre quanto ou qual parte de um vídeo o visitante visualizou.
a.media.complete
Indica se o usuário exibiu um vídeo completo. Por padrão, o evento completo é avaliado um segundo antes do fim do vídeo. Durante a implementação, é possível especificar quantos segundos a partir do fim do vídeo são necessários para considerar a visualização como concluída. Para vídeos ao vivo e outros fluxos que não tenham um fim definido, você pode especificar um ponto personalizado para avaliar conclusões, por exemplo, após um tempo de exibição específico.
Configure um objeto ADBMediaSettings
com as configurações que deseja usar para rastrear vídeos:
ADBMediaSettings *mediaSettings = [ADBMobile mediaCreateSettingsWithName:MEDIA_NAME
length:MEDIA_LENGTH playerName:PLAYER_NAME playerID:PLAYER_ID];
// milestone tracking. Use either standard milestones (percentage of total length)
// or offset milestones (seconds elapsed from the beginning of the video)
mediaSettings.milestones = @"25,50,75";
mediaSettings.segmentByMilestones = YES;
mediaSettings.offsetMilestones = @"60,120";
mediaSettings.segmentByOffsetMilestones = YES;
// seconds tracking - sends a hit every x seconds
mediaSettings.trackSeconds = 30; // sends a hit every 30 seconds
// open the video
[ADBMobile mediaOpenWithSettings:mediaSettings callback:nil];
// You are now ready to play the video, for example, [movieViewController.moviePlayer play];
// Note the mediaPlay, mediaStop and mediaClose methods are called in the
// event handlers described in the next section
Para avaliar a reprodução de vídeo, os métodos mediaPlay
, mediaStop
, e mediaClose
devem ser chamados em momentos apropriados. Por exemplo, quando o reprodutor está pausado, mediaStop
. mediaPlay
é chamado quando a reprodução começa ou é retomada.
O seguinte exemplo demonstra como configurar as notificações e chamar os métodos de mídia para avaliar o vídeo:
// configure notifications for when the video is finished, and when the
media playback state changes
- (void) configureNotifications:(MPMoviePlayerController *) movieController {
[[NSNotificationCenter defaultCenter]
addObserver: self
selector: @selector(mediaFinishedCallback:)
name: MPMoviePlayerPlaybackDidFinishNotification
object: movieController];
[[NSNotificationCenter defaultCenter]
addObserver: self
selector: @selector(mediaPlaybackChangedCallback:)
name: MPMoviePlayerPlaybackStateDidChangeNotification
object: movieController];
}
// define your notification callbacks.
- (void) mediaFinishedCallback: (NSNotification*) notification { [ADBMobile mediaClose:MEDIA_NAME];}
- (void) mediaPlaybackChangedCallback: (NSNotification*) notification {
MPMoviePlayerController *mediaController = notification.object;
if (mediaController.playbackState == MPMoviePlaybackStatePlaying) {
[ADBMobile mediaPlay:MEDIA_NAME offset: isnan(mediaController.currentPlaybackTime) ? 0.0 : mediaController.currentPlaybackTime];
}
else if (mediaController.playbackState == MPMoviePlaybackStateSeekingBackward) {
[ADBMobile mediaStop:MEDIA_NAME offset:mediaController.currentPlaybackTime];
}
else if (mediaController.playbackState == MPMoviePlaybackStateSeekingForward) {
[ADBMobile mediaStop:MEDIA_NAME offset:mediaController.currentPlaybackTime];
}
else if (mediaController.playbackState == MPMoviePlaybackStatePaused) {
[ADBMobile mediaStop:MEDIA_NAME offset:mediaController.currentPlaybackTime];
}
else if (mediaController.playbackState == MPMoviePlaybackStateInterrupted) {
[ADBMobile mediaStop:MEDIA_NAME offset:mediaController.currentPlaybackTime];
}
else if (mediaController.playbackState == MPMoviePlaybackStateStopped) {
[ADBMobile mediaStop:MEDIA_NAME offset:mediaController.currentPlaybackTime];
}
}
bool segmentByMilestones;
bool segmentByOffsetMilestones;
double length;
NSString *channel;
NSString *name;
NSString *playerName;
NSString *playerID;
NSString *milestones;
NSString *offsetMilestones;
NSUInteger trackSeconds;
NSUInteger completeCloseOffsetThreshold;
// settings used for ad tracking. For
bool isMediaAd;
double parentPodPosition;
NSString *CPM;
NSString *parentName;
NSString *parentPod;
bool ad;
bool clicked;
bool complete;
bool eventFirstTime;
double length;
double offset;
double percent;
double segmentLength;
double timePlayed;
double timePlayedSinceTrack;
double timestamp;
NSDate *openTime
NSString *name
NSString *playerName
NSString *mediaEvent
NSString *segment
NSUInteger milestone
NSUInteger offsetMilestone
NSUInteger segmentNum
NSUInteger eventType
mediaCreateSettingsWithName:length:playerName:playerID:
Retorna um objeto ADBMediaSettings
com parâmetros especificados.
Esta é a sintaxe para este método:
+(ADBMediaSettings *) mediaCreateSettingsWithName:(NSString *)name
length:(double)length
playerName:(NSString *)playerName
playerID:(NSString *)playerID;
Esta é a amostra de código para este método:
ADBMediaSettings *myCatSettings =
[ADBMobile mediaCreateSettingsWithName:@"catVideo" length:85
playerName:@"catVideoPlayer"
playerID:@"catPlayerId"];
mediaAdCreateSettingsWithName:length:playerName:parentName:parentPod:parentPodPosition:CPM:
Retorna um objeto ADBMediaSettings
a ser utilizado no rastreamento de um vídeo de anúncio.
Esta é a sintaxe para este método:
+ (ADBMediaSettings *) mediaAdCreateSettingsWithName:(NSString *)name
length:(double)length
playerName:(NSString *)playerName
parentName:(NSString *)parentName
parentPod:(NSString *)parentPod
parentPodPosition:(double)parentPodPosition
CPM:(NSString *)CPM;
Esta é a amostra de código para este método:
ADBMediaSettings *mySettings =
[ADBMobile mediaAdCreateSettingsWithName:@"ad" length:30
playerName:@"adPlayer"
parentName:@"catVideo"
parentPod:@"catCollection"
parentPodPosition:2
CPM:nil];
mediaOpenWithSettings:callback:
Abre um objeto ADBMediaSettings
para rastreamento.
Esta é a sintaxe para este método:
+ (void) mediaOpenWithSettings:(ADBMediaSettings *)settings
callback:(void (^)(ADBMediaState *mediaState))callback;
Esta é a amostra de código para este método:
[ADBMobile mediaOpenWithSettings:mySettings callback:^(ADBMediaState *mediaState) {
// do something with media state if you want}];
mediaClose:
Fecha o item de mídia com nome.
Esta é a sintaxe para este método:
+ (void) mediaClose:(NSString *)name;
Esta é a amostra de código para este método:
[ADBMobile mediaClose:@"kittiesPlaying"];
mediaPlay:offset:
Reproduz o item de mídia com o nome nome no deslocamento em questão (em segundos).
Esta é a sintaxe para este método:
+ (void) mediaPlay:(NSString *)name offset:(double)offset;
Esta é a amostra de código para este método:
[ADBMobile mediaPlay:@"cats" offset:25];
mediaComplete:offset:
Marca manualmente o item de mídia como concluído no offset em questão (em segundos).
Esta é a sintaxe para este método:
+ (void) mediaComplete:(NSString *)name offset:(double)offset;
Esta é a amostra de código para este método:
[ADBMobile mediaComplete:@"meowzah" offset:90];
mediaStop:offset:
Notifica ao módulo de mídia que o vídeo foi interrompido ou pausado no offset em questão.
Esta é a sintaxe para este método:
+ (void) mediaStop:(NSString *)name offset:(double)offset;
Esta é a amostra de código para este método:
[ADBMobile mediaStop:@"toonses" offset:30];
mediaClick:offset:
Notifica ao módulo de mídia que o item de mídia foi clicado.
Esta é a sintaxe para este método:
+ (void) mediaClick:(NSString *)name offset:(double)offset;
Esta é a amostra de código para este método:
[ADBMobile mediaClick:@"soManyCats" offset:47];
mediaTrack:withData:
Envia uma chamada de ação de rastreamento (sem exibição de página) para o estado de mídia atual.
Esta é a sintaxe para este método:
+ (void) mediaTrack:(NSString *)name withData:(NSDictionary *)data;