Show Menu
TEMAS×

Migración del SDK de medios independiente a Adobe Launch: iOS

Configuración

SDK de medios independiente

En el SDK de medios independiente, puede establecer la configuración de seguimiento en la aplicación y pasarla al SDK cuando cree el 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]; 

Extensión de Launch

  1. En Experience Platform Launch, haga clic en la pestaña Extensiones de su propiedad móvil
  2. En la pestaña Catálogo, busque la extensión Adobe Media Analytics para audio y vídeo y haga clic en Instalar.
  3. En la página de configuración de la extensión, configure los parámetros de seguimiento. La extensión de medios utilizará los parámetros configurados para el seguimiento.

Creación de rastreadores

SDK de medios independiente

En el SDK de medios independiente, cree manualmente el objeto ADBMediaHeartbeatConfig y configure los parámetros de seguimiento. Implementar la interfaz delegada que expone los getQoSObject() y getCurrentPlaybackTime()functions.
Cree una instancia de MediaHeartbeat para el seguimiento:
@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];

Extensión de Launch

Antes de crear el rastreador, registre la extensión multimedia y las extensiones dependientes con el núcleo móvil.
// 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;
}

Una vez registrada la extensión de medios, se puede crear el rastreador con la siguiente API. El rastreador selecciona automáticamente la configuración de la propiedad configurada de Launch.
[ACPMedia createTracker:^(ACPMediaTracker * _Nullable mediaTracker) {
    // Use the instance for tracking media.
}];

Actualización de los valores de experiencia del cabezal de reproducción y de la calidad.

SDK de medios independiente

En el SDK de medios independiente, se pasa un objeto delegado que implementa el protocolo ADBMediaHeartbeartDelegate durante la creación del rastreador. La implementación debe devolver el último QoE y cabezal de reproducción cada vez que el rastreador invoque los métodos de interfaz getQoSObject() y getCurrentPlaybackTime() .

Extensión de Launch

La implementación debe actualizar el cabezal de reproducción actual mediante el método denominado updateCurrentPlayhead expuesto por el rastreador. Para realizar un seguimiento preciso, debe invocar este método al menos una vez por segundo.
La implementación debe actualizar la información de QoE invocando el método updateQoEObject expuesto por el rastreador. Debe invocar este método siempre que haya un cambio en las métricas de calidad.

Transmisión de metadatos estándar/metadatos publicitarios

SDK de medios independiente

  • Metadatos de medios estándar:
    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];
    
    
  • Metadatos de anuncio estándar:
    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];
    
    

Extensión de Launch

  • Metadatos de medios estándar:
    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];
    
    
  • Metadatos de anuncio estándar:
    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];