Show Menu
TÓPICOS×

Migração do SDK do Media independente para o Adobe Launch - IOS

Configuração

SDK do Media independente

No SDK do Media independente, é possível configurar o rastreamento no aplicativo e transmiti-lo para o SDK ao criar o rastreador.
ADBMediaHeartbeatConfig *config = 
  [[ADBMediaHeartbeatConfig alloc] init];

config.trackingServer = @"namespace.hb.omtrdc.net";
config.channel = @"sample-channel";
config.appVersion = @"v2.0.0";
config.ovp = @"video-provider";
config.playerName = @"native-player";
config.ssl = YES;
config.debugLogging = YES;

ADBMediaHeartbeat* tracker = 
  [[ADBMediaHeartbeat alloc] initWithDelegate:self config:config]; 

Extensão do Launch

  1. No Experience Platform Launch, clique na guia Extensões para sua propriedade móvel
  2. Na guia Catálogo, localize a extensão Adobe Media Analytics para áudio e vídeo e clique em Instalar.
  3. Na página de configurações da extensão, defina os parâmetros de rastreamento. A extensão do Media usa os parâmetros configurados para rastreamento.

Criação do rastreador

SDK do Media independente

No SDK do Media independente, crie manualmente o objeto ADBMediaHeartbeatConfig e configure os parâmetros de rastreamento. Implemente a interface delegada que expõe o getQoSObject() e o getCurrentPlaybackTime()functions.
Crie uma instância de MediaHeartbeat para rastreamento:
@interface PlayerDelegate : NSObject<ADBMediaHeartbeatDelegate>
@end

@implementation PlayerDelegate {
}

- (NSTimeInterval) getCurrentPlaybackTime {
    // When called should return the current player time in seconds.
    return playhead_;
}

- (nonnull ADBMediaObject*) getQoSObject {
    // When called should return the latest qos values.
    return qosObject_;
}
@end

ADBMediaHeartbeatConfig *config = [[ADBMediaHeartbeatConfig alloc] init];

config.trackingServer = @"namespace.hb.omtrdc.net";
config.channel = @"sample-channel";
config.appVersion = @"app-version";
config.ovp = @"video-provider";
config.playerName = @"native-player";
config.ssl = YES;
config.debugLogging = YES;
ADBMediaHeartbeatDelegate* delegate = [[PlayerDelegate alloc] init];

ADBMediaHeartbeat* tracker = 
  [[ADBMediaHeartbeat alloc] initWithDelegate:delegate config:config];

Extensão do Launch

Antes de criar o rastreador, registre a extensão de mídia e as extensões dependentes no núcleo móvel.
// Register the extension once during app launch
#import <ACPCore.h>
#import <ACPAnalytics.h>
#import <ACPMedia.h>
#import <ACPIdentity.h>

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    [ACPCore setLogLevel:ACPMobileLogLevelDebug];
    [ACPCore configureWithAppId:@"your-launch-app-id"];
    [ACPMedia registerExtension];
    [ACPAnalytics registerExtension];
    [ACPIdentity registerExtension];
    [ACPCore start:nil];
    return YES;
}

Após registrar a extensão de mídia, o rastreador pode ser criado usando a seguinte API. O rastreador escolhe automaticamente a configuração da propriedade de inicialização configurada.
[ACPMedia createTracker:^(ACPMediaTracker * _Nullable mediaTracker) {
    // Use the instance for tracking media.
}];

Atualização dos valores Indicador de reprodução e Qualidade da experiência.

SDK do Media independente

No SDK do Media independente, um objeto delegado que implementa o protocolo ADBMediaHeartbeartDelegate é transmitido durante a criação do rastreador. A implementação deve retornar a QoE e o indicador de reprodução mais recentes sempre que o rastreador chamar os métodos de interface getQoSObject() e getCurrentPlaybackTime() .

Extensão do Launch

A implementação deve atualizar o indicador de reprodução atual, chamando o método updateCurrentPlayhead exposto pelo rastreador. Para um rastreamento preciso, você deve chamar esse método pelo menos uma vez por segundo.
A implementação deve atualizar as informações da QoE, chamando o método updateQoEObject exposto pelo rastreador. Você deve chamar esse método sempre que houver uma alteração nas métricas de qualidade.

Transmissão de metadados de mídia/anúncio padrão

SDK do Media independente

  • Metadados de mídia padrão:
    ADBMediaObject *mediaObject = 
      [ADBMediaHeartbeat createMediaObjectWithName:@"media-name" 
                         mediaId:@"media-id" 
                         length:60 
                         streamType:ADBMediaHeartbeatStreamTypeVod 
                         mediaType:ADBMediaTypeVideo];
    
    // Standard metadata keys provided by adobe.
    NSMutableDictionary *standardMetadata = [[NSMutableDictionary alloc] init];
    [standardMetadata setObject:@"Sample show" forKey:ADBVideoMetadataKeySHOW];
    [standardMetadata setObject:@"Sample season" forKey:ADBVideoMetadataKeySEASON];
    [mediaObject setValue:standardMetadata forKey:ADBMediaObjectKeyStandardMediaMetadata];
    
    //Attaching custom metadata
    NSMutableDictionary *videoMetadata = [[NSMutableDictionary alloc] init];
    [mediaMetadata setObject:@"false" forKey:@"isUserLoggedIn"];
    [mediaMetadata setObject:@"Sample TV station" forKey:@"tvStation"];
    
    [tracker trackSessionStart:mediaObject data:mediaMetadata];
    
    
  • Metadados de anúncio padrão:
    ADBMediaObject* adObject = 
      [ADBMediaHeartbeat createAdObjectWithName:[adData objectForKey:@"name"] 
                         adId:[adData objectForKey:@"id"]
                         position:[[adData objectForKey:@"position"] doubleValue]
                         length:[[adData objectForKey:@"length"] doubleValue]];
    
    // Standard metadata keys provided by adobe.
    NSMutableDictionary *standardMetadata = 
      [[NSMutableDictionary alloc] init];
    [standardMetadata setObject:@"Sample Advertiser" 
                      forKey:ADBAdMetadataKeyADVERTISER];
    [standardMetadata setObject:@"Sample Campaign" 
                      forKey:ADBAdMetadataKeyCAMPAIGN_ID];
    [adObject setValue:standardMetadata 
                      forKey:ADBMediaObjectKeyStandardAdMetadata];
    
    //Attaching custom metadata
    NSMutableDictionary *adDictionary = [[NSMutableDictionary alloc] init];
    [adDictionary setObject:@"Sample affiliate" forKey:@"affiliate"];
    
    [tracker trackEvent:ADBMediaHeartbeatEventAdStart 
             mediaObject:adObject 
             data:adDictionary];
    
    

Extensão do Launch

  • Metadados de mídia padrão:
    NSDictionary *mediaObject = 
      [ACPMedia createMediaObjectWithName:@"media-name" 
                mediaId:@"media-id" 
                length:60 
                streamType:ACPMediaStreamTypeVod 
                mediaType:ACPMediaTypeVideo];
    
    NSMutableDictionary *mediaMetadata = 
      [[NSMutableDictionary alloc] init];
    
    // Standard metadata keys provided by adobe.
    [mediaMetadata setObject:@"Sample show" forKey:ACPVideoMetadataKeyShow];
    [mediaMetadata setObject:@"Sample season" forKey:ACPVideoMetadataKeySeason];
    
    // Custom metadata keys
    [mediaMetadata setObject:@"false" forKey:@"isUserLoggedIn"];
    [mediaMetadata setObject:@"Sample TV station" forKey:@"tvStation"];
    [_tracker trackSessionStart:mediaObject data:mediaMetadata];
    
    
  • Metadados de anúncio padrão:
    NSDictionary* adObject = 
      [ACPMedia createAdObjectWithName:@"ad-name" 
                adId:@"ad-id" 
                position:1 
                length:15];
    
    NSMutableDictionary* adMetadata = 
      [[NSMutableDictionary alloc] init];
    
    // Standard metadata keys provided by adobe.
    [adMetadata setObject:@"Sample Advertiser" forKey:ACPAdMetadataKeyAdvertiser];
    [adMetadata setObject:@"Sample Campaign" forKey:ACPAdMetadataKeyCampaignId];
    
    // Custom metadata keys
    [adMetadata setObject:@"Sample affiliate" forKey:@"affiliate"];
    
    [tracker trackEvent:ACPMediaEventAdStart mediaObject:adObject data:adMetadata];