Tag Archives: ima_sdk

Google Media Framework: Making online video simple

We’re excited to announce an open source video player framework to make online video and video monetization with the IMA SDK easier than ever. The Google Media Framework (GMF) is available for iOS and Android, and we have a Video.js plugin for web based video players.


Google Media Framework for iOS


Google Media Framework for Android


GMF Features
  • Ready to use Video player for your apps and websites
  • Demo apps include production ready integrations with the IMA ads SDK
  • GMF is free and open source, so can be customized to meet your specific needs (Send us a pull request!)
  • Easily customize the UI color and add or remove buttons
  • Support for iOS 7+ and Android 4.1+

We hope these frameworks enable you to simply make great mobile video apps and awesome web video experiences. You can send us thoughts or questions via the GMF Google group.

GitHub Links

-- The Google Media Framework Team

Changes to the IMA SDK for iOS

The IMA SDK for iOS version beta7 will introduce some changes in the way you tell the SDK about your display area and companion slots, which lays the groundwork for more versatility in displaying ads. While these new, more versatile features aren’t quite ready yet, we recommend building with beta7 so you'll be prepared to take advantage of upcoming greater versatility and extending support to future iOS platforms.

Introducing the IMAAdDisplayContainer

In the beta6 version of the SDK, the IMAAdsManager contains an adView which you add to your UI to display ads (IMAAdsManager.adView). In the beta7 version of the SDK, you will provide the SDK with a UIView in which it will display ads when they are ready. This is done via the new IMAAdDisplayContainer. This new object will also contain information about your companion ad slots (but more on that later):

  self.adDisplayContainer = [[IMAAdDisplayContainer alloc]
initWithAdContainer:self.videoView
companionSlots:nil];

In the example, we use the videoView as the UIView for the ad container. The SDK simply adds views to the provided UIView to display ads, so you won’t lose the required components for the content player already in the videoView. This IMAAdDisplayContainer will be passed to the IMAAdRequest, in place of the current companionSlots parameter:

  IMAAdsRequest *request =
[[IMAAdsRequest alloc] initWithAdTagUrl:self.adTagUrlTextField.text
adDisplayContainer:self.adDisplayContainer
userContext:nil];

Changes to the IMACompanionAdSlot

In the beta6 version of the SDK, you provide the IMAAdsRequest with an NSArray of IMACompanionSlot objects, each of which is initialized with a width and height. When ads are loaded, you add these to your UI:

  // Create your companion slots.
NSMutableDictionary *companions = [NSMutableDictionary dictionary];
companions[@"300x50"] =
[[IMACompanionAdSlot alloc] initWithWidth:300 height:50];
self.companionSlots = companions;

...

// Give the companion slots to the IMAAdsRequest.
IMAAdsRequest *request =
[[IMAAdsRequest alloc] initWithAdTagUrl:self.adTagUrlTextField.text
companionSlots:[self.companionSlots allValues]
userContext:nil];

...

// Once ads have been loaded, display the companion ads.
[self.smallCompanionSlot addSubview:
((IMACompanionAdSlot *)self.companionSlots[@"300x50"]).view];
In the beta7 version of the SDK, you will initialize the IMAAdDisplayContainer with an array of companion ad slots. You will then initialize the IMAAdsRequest with the IMAAdDisplayContainer. When ads are loaded, the SDK will fill in the companions for you:
  // Create your companion slots.
NSMutableDictionary *companions = [NSMutableDictionary dictionary];
companions[@"300x50"] =
[[IMACompanionAdSlot alloc] initWithView:self.smallCompanionSlot
width:300
height:50];
self.companionSlots = companions;

// Give the companion slots to the IMAAdDisplayContainer.
self.adDisplayContainer = [[IMAAdDisplayContainer alloc]
initWithAdContainer:self.videoView
companionSlots:[self.companionSlots allValues]];

// Request ads with the IMAAdDisplayContainer.
IMAAdsRequest *request =
[[IMAAdsRequest alloc] initWithAdTagUrl:self.adTagUrlTextField.text
adDisplayContainer:self.adDisplayContainer
userContext:nil];

These changes will allow for continued support of YouTube-hosted ads (including TrueView), as well as allow you to provide a custom player for ads further down the road, similar to the HTML5 custom playback option. A custom ad player is not intended to be used by everyone - in fact most of you will not need it - but it will offer support for some additional features in the future.

As always, if you have any questions feel free to contact us via the support forum.

Announcing open sign-ups for the Ads API Workshops on Display

We're pleased to announce open sign-ups for the first Ads API Workshops on Display event of 2014. The workshop will cover the following display ads products:
  • DoubleClick for Publishers API
  • DoubleClick Sales Manager API
  • Interactive Media Ads (IMA) SDK
  • Mobile Ads SDK

These workshops are a great way for you to meet with the display ads API team and ask questions in person. This is also a key occasion for members of the community to bring their feedback directly to us. Most of all, it's a great opportunity for you to exchange ideas and best practices with fellow developers.

We are inviting you to join us in the following cities:

  • New York, Tuesday, June 17
  • San Francisco, Monday, June 23

Please fill out this registration form if you're interested in attending one of these workshops. Due to limited space, we cannot guarantee admittance, but we’ll send a confirmation email in the coming weeks to let you know if you have a spot.

To receive announcements of upcoming Ads API Workshops on Display, please join this mailing list.

Hope to see you there!

IMA SDK Moving Off of s0.2mdn.net

What is happening?

If you pay close attention to your network traffic, you’ve probably noticed that the IMA SDK is hosted on s0.2mdn.net. Last week we started migrating traffic from this domain to imasdk.googleapis.com. This will be a gradual migration - we will not move all traffic at once. Instead, we’ve started putting all HTML5 traffic on the new domain. Flash and native SDKs will follow shortly. For updates on our progress, check out the "Domain Migration Status” forum thread. The old domain will continue to work for the remainder of the year, but we encourage you to move early.

What this means for you

Flash publishers

Re-download the implementation swc from our downloads page, recompile your app, and re-deploy. This only needs to be done after the Flash migration starts - we’ll let you know when that will happen on the aforementioned forum thread.

HTML5 publishers

Start loading the ima3.js file from the new domain (http://imasdk.googleapis.com/js/sdkloader/ima3.js).

Native publishers (Android and iOS users)

You should not be affected by this change.

As always, if you have any questions feel free to contact us via the support forum.

Ending support for VAST 1 and F2F in the IMA SDK

On May 5, 2014, in the spirit of spring cleaning, the IMA Flash SDK will be dropping support for several rarely-used formats and SDKs:

  • VAST 1 XML format. The IMA Flash SDK will continue to support VAST 2 and will continue to improve on its existing beta support for VAST 3. For more information about what versions of VAST, VPAID and VMAP the IMA Flash SDK supports, visit the Video Features and SDK Compatibility page.
  • Flash-in-Flash (F2F) creatives. VPAID, the industry standard for interactive video ads, is the recommended alternative for replacing F2F creatives. The IMA Flash SDK currently supports VPAID 1 and has beta support for VPAID 2. 
  • IMA Flash SDK v1. This version of the SDK will no longer be guaranteed to work and won't receive bug fixes, updates, or responses to support issues. V3 of the IMA Flash SDK will be the only fully supported version of the SDK.
  • Dart Shell SDK. This DoubleClick SDK will no longer be guaranteed to work and won't receive bug fixes, updates, or responses to support issues.

What will happen if VAST 1 or an F2F creative is sent to the SDK?

If a VAST 1 ad tag response or F2F creative is sent to the SDK, the SDK will raise an AdErrorEvent with an appropriate error. For example, a VAST 1.0 response will return an AdErrorCodes.VAST_PARSING_ERROR which can be handled with the following ActionScript modified from the Flash IMA SDK example app:

  // ...
import com.google.ads.ima.api.AdErrorCodes;

private function initAdsLoader():void {
// ...
adsLoader.addEventListener(AdErrorEvent.AD_ERROR, adsLoadErrorHandler);
}

private function adsLoadErrorHandler(event:AdErrorEvent):void {
// ...
if (event.error.errorCode == AdErrorCodes.VAST_PARSING_ERROR) {
trace("Invalid VAST format.");
// Error handling logic...
}
}

Other questions?

Questions about these support changes or other questions about the Flash IMA SDK? Check out the IMA SDK Flash Quick Start Guide or drop us a line on the IMA SDK forum. Follow our Google+ page for other announcements and updates.

Introducing IMA SDK Downloads for FlashDevelop and Flash Builder

Using FlashDevelop or Adobe Flash Builder and looking to get started with the IMA SDK? Now it's even easier with new downloads specifically for FlashDevelop and Flash Builder 4.7.

Check out our guide to getting started with the Flash IMA SDK with these IDEs.

Once you've gone through the guide and are up and running with a compiled .swf, what's next? Check out the Flash IMA SDK Quick Start Guide and Flash IMA SDK API Reference docs to learn more about the features of the Flash IMA SDK.

If you have any questions about the Flash IMA SDK let us know on the IMA SDK forum. Follow our Google+ page for other announcements and updates.

Ending support for iOS 5 in the IMA SDK

On February 18, 2014, we will stop providing forum support or bug fixes for iOS IMA SDK issues specifically related to iOS 5. This applies to the current beta of the iOS IMA SDK as well as all future releases.

What does this mean if an app is currently targeting iOS 5?

  • There will be no specific SDK change on February 18th that will break compatibility, so the iOS IMA SDK should continue to work with iOS 5 in the short term. However, after that date, the SDK won't be guaranteed to work for iOS 5 apps. 
  • Bugs that only affect iOS 5 will no longer be prioritized. 
  • If a specific iOS IMA SDK release significantly breaks functionality in iOS 5, it will be documented in the release notes
  • This support change will not require you to make any changes to your app specific to the iOS IMA SDK, but you may have to make some changes to your app to set its Deployment Target to iOS 6+. 

What about other iOS versions?

We periodically stop supporting older iOS versions when adoption levels fall below a small threshold. Any time we are preparing to end support for a major iOS release, we will make an early announcement on our blog and release notes page.

If you need any help with iOS IMA SDK issues encountered when targeting your application for iOS 6, or about the iOS IMA SDK in general, let us know on the IMA SDK forum or check out the IMA SDK iOS Quick Start Guide. Follow our Google+ page for other announcements and updates.

IMA SDK Samples are now available on GitHub

The IMA SDK samples (Flash, HTML5, iOS and Android) have been moved to GitHub under the Google Ads organization. You can find the links to these repos on the updated downloads page.

With the move to GitHub, you’ll no longer have to clobber your existing sample files to get updates - you can clone the repo and pull updates as they’re released. If you like the old way, we’ve got you covered - you can still get the zipped samples from the downloads page.

Note: The IMA SDK binaries have not been moved to GitHub.

If you have any questions about the IMA SDK, contact us on the forum. Keep an eye on our Google+ page for announcements and updates.