Schedule VAST ads (iOS v3)
Add advertising breaks to your iOS app when using the VAST ad client.
The most basic advertising implementation is to run a single VAST ad tag as a pre-roll that runs before each playlist.
• If you are using IMA ad tags, follow the steps in Enable Google IMA.
• If you are using FreeWheel, follow the steps in Schedule FreeWheel Ads.
Add a pre-roll ad to a player
Use the following steps to add a pre-roll ad to the player you added to your view:
- Instantiate a JWAdBreak object called
adBreak. At a minimum, you must assign an ad tag URL to theinitWithTagsandoffsetproperties. - Instantiate a JWAdConfig object and assign it to
config.advertising. - Define
config.advertising.clientasJWAdClientVast(Obj-C) or.vast(Swift). This defines the ad client. - Add
adBreakto the schedule array property of theJWAdConfig. This adds the ad schedule to the player'sconfigproperty.
@property (nonatomic) JWPlayerController *player; @property (nonatomic, weak) IBOutlet UIView *playerContainerView; @end @implementation ObjCViewController - (void)viewDidLoad { [super viewDidLoad]; // Create the Ad Break JWAdBreak *adBreak = [JWAdBreak adBreakWithTag:ADTAG_URL offset:@"pre"]; // Create the Ad Config JWAdConfig *adConfig = [JWAdConfig new]; adConfig.client = JWAdClientVast; adConfig.schedule = @[adBreak]; // Initialize the JWConfig and create the JWPlayerController JWConfig *config = [JWConfig configWithContentURL:CONTENT_URL]; config.advertising = adConfig; self.player = [[JWPlayerController alloc] initWithConfig:config]; } - (void)viewDidAppear { [super viewDidAppear]; [self.view addSubview:self.player.view]; }class ViewController: UIViewController { @IBOutlet weak var playerContainerView: UIView! var player: JWPlayerController? override func viewDidLoad() { super.viewDidLoad() // Create the Ad Break let adBreak = JWAdBreak(tag: ADTAG_URL, offset: "pre") // Create the AdConfig let adConfig = JWAdConfig() adConfig.client = .vast adConfig.schedule = [adBreak] // Initialize the JWConfig and create the JWPlayerController let config = JWConfig(contentUrl: CONTENT_URL) config.advertising = adConfig player = JWPlayerController(config: config) } override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) playerContainerView.addSubview(player!.view) } }
You can build upon this basic implementation by adding more ad breaks or defining ad rules.
Add multiple ad breaks to a player
Use the following steps to add multiple ad breaks to the previous VAST pre-roll example:
- Instantiate an additional
JWAdBreakobject. - Assign an ad tag to the
tagproperty. - When defining the
offsetproperty, choose one of the following values to schedule a mid-roll or post-roll ad:
Mid-roll
• {number}: (String) Ad plays after the specified number of seconds.
• {timecode}: (String) Ad plays at a specific time, inhh:mm:ss:mmmformat.
• {xx%}: (String) Ad plays after xx% of the content has played.
Post-roll
•post: (String) Ad plays after the content. - Add the additional
AdBreakobject to theschedulearray.
@property (nonatomic) JWPlayerController *player; @property (nonatomic, weak) IBOutlet UIView *playerContainerView; @end @implementation ObjCViewController - (void)viewDidLoad { [super viewDidLoad]; // Create the Ad Breaks JWAdBreak *adBreak = [JWAdBreak adBreakWithTag:ADTAG_URL offset:@"pre"]; JWAdBreak *adBreak2 = [JWAdBreak adBreakWithTag:ADTAG2_URL offset:@"10"]; JWAdBreak *adBreak3 = [JWAdBreak adBreakWithTag:ADTAG3_URL offset:@"00:00:15:000"]; JWAdBreak *adBreak4 = [JWAdBreak adBreakWithTag:ADTAG4_URL offset:@"25%"]; JWAdBreak *adBreak5 = [JWAdBreak adBreakWithTag:ADTAG5_URL offset:@"post"]; // Create the AdConfig JWAdConfig *adConfig = [JWAdConfig new]; adConfig.client = JWAdClientVast; adConfig.schedule = @[adBreak, adBreak2, adBreak3, adBreak4, adBreak5]; // Initialize the JWConfig and create the JWPlayerController JWConfig *config = [JWConfig configWithContentURL:CONTENT_URL]; config.advertising = adConfig; self.player = [[JWPlayerController alloc] initWithConfig:config]; } - (void)viewDidAppear { [super viewDidAppear]; [self.view addSubview:self.player.view]; }class ViewController: UIViewController { @IBOutlet weak var playerContainerView: UIView! var player: JWPlayerController? override func viewDidLoad() { super.viewDidLoad() // Create the Ad Breaks let adBreak = JWAdBreak(tag: ADTAG_URL, offset: "pre") let adBreak2 = JWAdBreak(tag: ADTAG2_URL, offset: "10") let adBreak3 = JWAdBreak(tag: ADTAG3_URL, offset: "00:00:15:000") let adBreak4 = JWAdBreak(tag: ADTAG4_URL, offset: "25%") let adBreak5 = JWAdBreak(tag: ADTAG5_URL, offset: "post") // Create the AdConfig let adConfig = JWAdConfig() adConfig.client = .vast adConfig.schedule = [adBreak, adBreak2, adBreak3, adBreak4, adBreak5] // Initialize the JWConfig and create the JWPlayerController let config = JWConfig(contentUrl: CONTENT_URL) config.advertising = adConfig player = JWPlayerController(config: config) } override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) playerContainerView.addSubview(player!.view) } }
You can build on this basic implementation by defining ad rules.
Updated 11 days ago
Did this page help you?
