IMA DAI SDK unter iOS verwenden

Livestreams wiedergeben, die bei der Google Cloud Video Stitcher API registriert sind

In diesem Leitfaden erfahren Sie, wie Sie das IMA DAI SDK für iOS, um eine Livestream für ein Ereignis, das für Google Cloud Video Stitcher registriert ist API und erklärt, wie Sie während der Wiedergabe eine Werbeunterbrechung einfügen.

Dieser Leitfaden erweitert das grundlegende Beispiel aus dem Abschnitt Erste Schritte Leitfaden für die dynamische Anzeigenbereitstellung mit IMA-Werten.

Informationen zur Integration mit anderen Plattformen oder zur Verwendung des IMA clientseitige SDKs siehe Interactive Media Ads SDKs.

Google Cloud-Projekt einrichten

Geben Sie die folgenden Variablen zur Verwendung im IMA SDK ein:

Standort
Die Google Cloud-Region, in der Ihre Livekonfiguration erstellt wurde: LOCATION
Projektnummer
Die Google Cloud-Projektnummer, für die die Video Stitcher API verwendet wird: PROJECT_NUMBER
OAuth-Token

Das kurzlebige OAuth-Token eines Dienstkontos mit dem Video Stitcher-Nutzer Rolle:

OAUTH_TOKEN

Weitere Informationen zu Erstellen kurzlebiger Anmeldedaten für einen Dienst Konten Das OAuth-Token kann für mehrere Anfragen wiederverwendet werden, solange abgelaufen.

Netzwerkcode

Ad Manager-Netzwerkcode für die Anzeigenanfrage: NETWORK_CODE

ID der Live-Konfiguration
Die Live-Konfigurations-ID, die Sie beim Erstellen Ihrer Livestream-Veranstaltung angegeben haben: LIVE_CONFIG_ID
Benutzerdefinierter Asset-Schlüssel
Der benutzerdefinierte Asset-Schlüssel für Ad Manager, der beim Erstellen eines Konfiguration für eine Livestream-Veranstaltung mit der Video Stitcher API: CUSTOM_ASSET_KEY

Nutzerkontext
Der Nutzerkontext zum Verfolgen von Anfragen. Kann nil sein. Die Standardeinstellung in diesem Leitfaden ist nil.

Grundlegendes Beispiel herunterladen und vorbereiten

Laden Sie die Beispiele für die dynamische Anzeigenbereitstellung mit IMA für iOS herunter und extrahieren Sie das Beispiel „Basic“ in einen neuen Ordner. Dieses Beispiel ist ein Xcode- bei dem das IMA SDK von CocoaPods geladen wird.

Um das Beispiel für die Ausführung vorzubereiten, prüfen Sie, ob CocoaPods installiert haben, und öffnen Sie dann im Terminal und führen Sie den folgenden Befehl aus:

pod install --repo-update

Sobald der Befehl ausgeführt wurde, sehen Sie eine Datei mit dem Namen BasicExample.xcworkspace in im Projektordner. Öffnen Sie diese Datei in Xcode und führen Sie das Beispiel aus, um sicherzustellen, das Testvideo und die Anzeigen wie erwartet wiedergegeben werden.

Livestream anfordern

Wenn du den Beispielstream durch deinen Livestream ersetzen möchtest, musst du die IMAVideoStitcherLiveStreamRequest-Klasse, mit der automatisch eine Anzeige erstellt wird mit Google Ad Manager. Auf der Google Ad Manager-Benutzeroberfläche können Sie nach die generierten Sitzungen für die dynamische Anzeigenbereitstellung für zu Monitoring- und Debugging-Zwecken.

Das vorhandene Beispiel enthält Beispiele für die Anforderung eines VOD-Streams oder eines von den Google-Servern für die dynamische Anzeigenbereitstellung. Damit das Beispiel mit der Google Cloud Video Stitcher API verwenden möchten, müssen Sie die aktuelle requestStream ersetzen. -Funktion mit einer aus, die die Klasse IMAVideoStitcherLiveStreamRequest verwendet:

ViewController.m

#import <GoogleInteractiveMediaAds/GoogleInteractiveMediaAds.h>

/// Fallback URL in case something goes wrong in loading the stream. If all goes well,
/// this will not be used.
static NSString *const kTestAppContentUrl_M3U8 =
    @"//devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8";


static NSString *const kLiveConfigId = @"LIVE_CONFIG_ID";
static NSString *const kLocation = @"LOCATION";
static NSString *const kProjectNumber = @"PROJECT_NUMBER";
static NSString *const kOAuthToken = @"OAUTH_TOKEN";
static NSString *const kNetworkCode = @"NETWORK_CODE";
static NSString *const kCustomAssetKey = @"CUSTOM_ASSET_KEY";


@interface ViewController () <IMAAdsLoaderDelegate, IMAStreamManagerDelegate>
...
- (void)requestStream {
  // Create an ad display container for ad rendering.
  IMAAdDisplayContainer *adDisplayContainer =
      [[IMAAdDisplayContainer alloc] initWithAdContainer:self.videoView
                                          viewController:self
                                          companionSlots:nil];
  // Create an IMAAVPlayerVideoDisplay to give the SDK access to your video player.
  IMAAVPlayerVideoDisplay *imaVideoDisplay =
      [[IMAAVPlayerVideoDisplay alloc] initWithAVPlayer:self.contentPlayer];


  IMAVideoStitcherLiveStreamRequest *request =
      [[IMAVideoStitcherLiveStreamRequest alloc] initWithLiveStreamEventID:kLiveConfigId
                                                                    region:kLocation
                                                             projectNumber:kProjectNumber
                                                                OAuthToken:kOAuthToken
                                                               networkCode:kNetworkCode
                                                            customAssetKey:kCustomAssetKey
                                                        adDisplayContainer:adDisplayContainer
                                                              videoDisplay:imaVideoDisplay
                                                               userContext:nil
                                                               videoStitcherSessionOptions:nil];

  [self.adsLoader requestStreamWithRequest:request];
}

Optional: Optionen für Streamingsitzungen hinzufügen

Passe deine Streamanfrage an, indem du Sitzungsoptionen hinzufügst, um die Standardeinstellung zu überschreiben Cloud Video Stitcher API konfigurieren, indem Sie die videoStitcherSessionOptions in Ihrem IMAVideoStitcherLiveStreamRequest. Wenn Sie eine unbekannte Option angeben, In der Video Stitcher API wird ein HTTP 400-Fehler zurückgegeben. Informationen dazu finden Sie in der Anleitung zur Fehlerbehebung um Unterstützung zu erhalten.

Beispielsweise können Sie den Parameter Manifestoptionen durch das folgende Code-Snippet, das zwei Streammanifeste mit Wiedergaben werden von der niedrigsten zur höchsten Bitrate sortiert.

Objective-C

 // Define session options JSON string.
 // The following session options are examples. Use session options
 // that are compatible with your video stream.
 NSString *sessionOptionsStr =
   @"{"
   "  \"manifestOptions\": {"
   "    \"includeRenditions\":["
   "      {\"bitrateBps\": 3000, \"codecs\": \"hvc1.1.4.L126.B0, mp4a.40.2\"},"
   "      {\"bitrateBps\": 2000, \"codecs\": \"avc1.64001f, mp4a.40.2\"},"
   "    ]"
   "  }"
   "}";
 // convert JSON NSString to NSDictionary
 NSData *sessionOptionsData = [sessionOptionsStr dataUsingEncoding:NSUTF8StringEncoding];
 NSError *error = nil;
 NSDictionary *sessionOptions = [NSJSONSerialization
                       JSONObjectWithData:sessionOptionsData
                       options:0
                       error:&error];
 // make stream request
 IMAVideoStitcherLiveStreamRequest *request =
     [[IMAVideoStitcherLiveStreamRequest alloc] initWithLiveStreamEventID:kLiveConfigId
                                                                   region:kRegion
                                                           projectNumber:kProjectNumber
                                                               OAuthToken:kOAuthToken
                                                             networkCode:kNetworkCode
                                                           customAssetKey:kCustomAssetKey
                                                       adDisplayContainer:adDisplayContainer
                                                             videoDisplay:imaVideoDisplay
                                                             userContext:nil
                                             videoStitcherSessionOptions:sessionOptions];
 [self.adsLoader requestStreamWithRequest:request];

Swift

 // Define session options JSON string.
 // The following session options are examples. Use session options
 // that are compatible with your video stream.
 let sessionOptionsStr = """
     {
       "manifestOptions": {
         "includeRenditions": [
           {"bitrateBps": 3000, "codecs": "hvc1.1.4.L126.B0, mp4a.40.2"},
           {"bitrateBps": 2000, "codecs": "avc1.64001f, mp4a.40.2"},
         ],
         "bitrateOrder": "ascending"
       }
     }
     """
 // convert JSON string to dictionary
 guard let sessionOptionsData = sessionOptionsStr.data(using: .utf8, allowLossyConversion: false) else { return nil }
 let sessionOptions = try? JSONSerialization.jsonObject(with: sessionOptionsData, options: .mutableContainers)
 // make stream request
 let request = IMAVideoStitcherLiveStreamRequest(
   liveStreamEventID:ViewController.liveConfigId
   region:ViewController.region
   projectNumber:ViewController.projectNumber
   OAuthToken:ViewController.oAuthToken
   networkCode:ViewController.networkCode
   customAssetKey:ViewController.customAssetKey
   adDisplayContainer:adDisplayContainer
   videoDisplay:imaVideoDisplay
   userContext:nil
   videoStitcherSessionOptions:sessionOptions)
 adsLoader?.requestStream(with: request)

Führen Sie das Projekt aus. Anschließend können Sie Ihren benutzerdefinierten Livestream anfordern und abspielen.

Werbeunterbrechung einfügen

Die Google Cloud Video Stitcher API fügt für jede Werbeunterbrechung Anzeigen ein, die aus dem Anzeigen-Tag abgerufen wurden. Werbeunterbrechungen werden im Manifest durch Anzeigenmarkierungen gekennzeichnet. Anzeigenmarkierungen sind die vom Livestreamencoder eingefügt wurden.

Die Anzeige wird sofort nach dem Einfügen der Werbeunterbrechung wiedergegeben.

Bereinigen

Du hast jetzt erfolgreich einen Livestream über die Google Cloud Video Stitcher API und über das IMA DAI SDK angefordert. für iOS-Geräte sollten alle bereitgestellten Ressourcen.

Folgen Sie Livestream bereinigen um nicht benötigte Ressourcen und Assets zu entfernen.