<?xml version="1.0" encoding="utf-8" ?>
<feed xmlns="http://www.w3.org/2005/Atom">
 
 <title type="text">Google Code: News</title>
 <link type="application/atom+xml" href="http://code.google.com/news/atom.xml" rel="self"/>
 <link type="html" href="http://code.google.com/"/>
 <updated>2012-03-07T16:31:52</updated>
 <id>tag:code.google.com,news</id>

 <entry>
 <title>Join us in London for an OpenID Workshop</title>
 <link href="http://feedproxy.google.com/~r/GDBcode/~3/I3NBi8BXsfs/join-us-in-london-for-openid-workshop.html"/>
 <id>tag:blogger.com,1999:blog-596098824972435195.post-3302506244126934509</id>
 <published>2012-03-07T11:55:00.000-08:00</published>
 <updated>2012-03-07T11:55:28.712-08:00</updated>
 <summary type="html">By Eric Sachs, Senior Product Manager, Google Identity Team UPDATE (March 7): Following our post two weeks ago, this event sold out almost immediately. To accommodate more people...</summary>
 <content type="html">&lt;img alt=&quot;Author Photo&quot; height=&quot;80&quot; src=&quot;http://3.bp.blogspot.com/-JMNG2FkNpUA/T0Uqy7VouYI/AAAAAAAABFM/AbUSnw7BV5U/s1600/eric.sachs.jpg&quot; style=&quot;float: right; margin-left: 1em; text-align: right;&quot; /&gt;&lt;br /&gt;
&lt;em&gt;By Eric Sachs, Senior Product Manager, Google Identity Team&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;UPDATE&lt;/b&gt; (March 7): Following our post two weeks ago, this event sold out almost immediately. To accommodate more people, the event has been moved to a larger room at Microsoft’s offices in London. For more details on agenda, speakers, location, and registration, please &lt;a href=&quot;http://oidflondon2012march.eventbrite.com/&quot;&gt;visit the event site&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The OpenID Foundation is hosting an OpenID workshop on March 28th that will be located at Google’s London office (&lt;b&gt;UPDATE:&lt;/b&gt; moved to Microsoft’s London office).  Google uses OpenID in a number of its services, and is a corporate member of the OpenID Foundation.  The OpenID Foundation runs a series of workshops like this one for business decision makers, as well as running other OpenID summits that are more technical.&lt;br /&gt;
&lt;br /&gt;
The event is for the owners of consumer websites and enterprise SaaS services to discuss how to improve login systems by using techniques such as &lt;a href=&quot;http://oauth.net/2/&quot;&gt;OAuth&lt;/a&gt;, &lt;a href=&quot;http://openid.net/&quot;&gt;OpenID&lt;/a&gt; and an &lt;a href=&quot;http://accountchooser.com/&quot;&gt;Account Chooser&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Please join us in London on Wednesday, March 28th, 2012 from 10:00 until 17:30 GMT.  For more details on agenda, speakers, location, and registration, &lt;a href=&quot;http://oidflondon2012march.eventbrite.com/&quot;&gt;visit the event site&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
In addition to the OpenID workshop, there is a &lt;a href=&quot;http://www.cloudidentitysummit.com/event/london.cfm&quot;&gt;similar event the previous day on identity security best practices&lt;/a&gt;, hosted by Ping Identity and sponsored by Google.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;&lt;a href=&quot;https://plus.google.com/116241727483324246886/posts&quot;&gt;Eric Sachs&lt;/a&gt; has been a product manager at Google since 2003. He is now involved with industry efforts to increase adoption of Internet Identity standards including OAuth and OpenID.&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;Posted by &lt;a href=&quot;https://profiles.google.com/u/0/105627346610764729807/about&quot;&gt;Scott Knaster&lt;/a&gt;, Editor&lt;/em&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;/blockquote&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/596098824972435195-3302506244126934509?l=googledevelopers.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/GDBcode/~4/I3NBi8BXsfs&quot; width=&quot;1&quot; /&gt;</content>
 </entry>

 <entry>
 <title>A New Way to Follow Us on Google Plus</title>
 <link href="http://feedproxy.google.com/~r/GoogleGeoDevelopersBlog/~3/Gb4GaK0-8eI/new-way-to-follow-us-on-google-plus.html"/>
 <id>tag:blogger.com,1999:blog-3124040365160254795.post-7058792713497278971</id>
 <published>2012-03-07T11:43:00.009-08:00</published>
 <updated>2012-03-07T16:20:03.310-08:00</updated>
 <summary type="html">To the Google Maps Developer Relations team, the most exciting feature of Google+ is the opportunities it gives us to connect with Google Maps API developers from around...</summary>
 <content type="html">&lt;p&gt;To the Google Maps Developer Relations team, the most exciting feature of Google+ is the opportunities it gives us to connect with Google Maps API developers from around the world. That&#39;s why today we&#39;re very excited to announce the launch of the &lt;a href=&quot;https://plus.google.com/b/104063627743574070634/104063627743574070634/posts&quot; target=&quot;_blank&quot;&gt;Google Maps API Google+ page&lt;/a&gt;. &lt;/p&gt;
&lt;a href=&quot;https://plus.google.com/b/104063627743574070634/104063627743574070634/posts&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5717302420129350962&quot; src=&quot;http://2.bp.blogspot.com/-q3qT6w_Ov8A/T1fwQnFKhTI/AAAAAAAAAX0/uY_rY1Y_M4o/s320/mapsapig.jpg&quot; style=&quot;cursor: pointer; cursor: hand; width: 320px; height: 262px;&quot; /&gt;&lt;/a&gt;&lt;p&gt;
&lt;/p&gt;&lt;p&gt;The Google Maps API Page will be used to give helpful tips about using our APIs, announce our office-hours hangouts, and point you to new cool maps that we find. We’ll also use the page to tell you about upcoming events, highlight announcements, link to helpful articles, and a lot more. It’ll also give us a stronger means to connect with our valued developer community. For instance, today we announced the next &lt;a href=&quot;https://plus.google.com/b/104063627743574070634/104063627743574070634/posts/1YzAHqUGZUd&quot; target=&quot;_blank&quot;&gt;Google Maps API Office Hours&lt;/a&gt;, in which you can connect to the Maps Developer Relations team through Google Plus Hangouts.&lt;/p&gt;&lt;p&gt;Over the past couple of months, the Maps DevRel team has been connecting with Google Maps API developers through our personal accounts. We’ve now created a &lt;a href=&quot;https://plus.google.com/b/104063627743574070634/104063627743574070634/posts/QyiR4qW3vTC&quot; target=&quot;_blank&quot;&gt;new circle&lt;/a&gt; that you can follow that has all of us in it.&lt;/p&gt;&lt;p&gt;For years, this blog has been the primary way for developers to keep up to date about the goings-on in the Google Maps API world and that isn’t going to change. We see the new Google+ page as adding a new way for you to connect with the Google Maps API team.&lt;/p&gt;&lt;p&gt;So if you want to learn more about the Google Maps API, connect with other map developers, and keep up with the latest news, &lt;a href=&quot;https://plus.sandbox.google.com/104063627743574070634/posts&quot; target=&quot;_blank&quot;&gt;add us&lt;/a&gt; to your circles!&lt;/p&gt;&lt;br /&gt;&lt;span class=&quot;post-author&quot;&gt;Posted by &lt;a href=&quot;http://profiles.google.com/mano.marks&quot;&gt;Mano Marks&lt;/a&gt; and &lt;a href=&quot;https://plus.google.com/u/1/112223943229765892230/posts&quot;&gt;Carlos Cuesta&lt;/a&gt;, Maps API team&lt;/span&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/3124040365160254795-7058792713497278971?l=googlegeodevelopers.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</content>
 </entry>

 <entry>
 <title>A New Look for the +1 Button</title>
 <link href="http://feedproxy.google.com/~r/GppBxyz/~3/Ap9W2Jbs7d4/new-look-for-1-button.html"/>
 <id>tag:blogger.com,1999:blog-6884131687395025558.post-3077146136238968645</id>
 <published>2012-03-07T10:06:00.001-08:00</published>
 <updated>2012-03-07T15:28:16.753-08:00</updated>
 <summary type="html">Following in the footsteps of our new red and white Google+ icon, the +1 button is sporting a fresh coat of paint. Starting today, this update will be...</summary>
 <content type="html">Following in the footsteps of our new red and white &lt;a href=&quot;https://developers.google.com/+/plugins/badge/?utm_source=blog&amp;amp;utm_medium=gplusplatform&amp;amp;utm_campaign=new1pixels#static&quot; target=&quot;_blank&quot;&gt;Google+ icon&lt;/a&gt;, the +1 button is sporting a fresh coat of paint. Starting today, this update will be visible first to our &lt;a href=&quot;http://www.google.com/+/learnmore/platform-preview/?utm_source=blog&amp;amp;utm_medium=gplusplatform&amp;amp;utm_campaign=new1pixels&quot; target=&quot;_blank&quot;&gt;Google+ Platform Preview Group&lt;/a&gt; and shortly thereafter we’ll roll it out to the public.&lt;br /&gt;
&lt;br /&gt;
Check out the new pixels:&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://4.bp.blogspot.com/-ct8BIIqoL1s/T1egz5AVbcI/AAAAAAAAALM/iG2r_UICKe8/s1600/web-standard-rest+(1).png&quot; style=&quot;border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none;&quot; /&gt;&lt;br /&gt;
&lt;i style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;Before you’ve +1’d&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;img border=&quot;0&quot; src=&quot;http://1.bp.blogspot.com/-yswnos-64qM/T1eg_KXU5XI/AAAAAAAAALU/ltHL19AENs0/s1600/web-standard-activated-rest+(1).png&quot; style=&quot;border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none;&quot; /&gt;
&lt;span style=&quot;color: #999999; text-align: left;&quot;&gt;&lt;i&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;i style=&quot;color: #999999; text-align: left;&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&lt;i&gt;After you’ve +1’d&lt;/i&gt;&lt;/span&gt;&amp;nbsp;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The +1 buttons you’ve already installed will automatically update; there’s nothing you need to do. Stop by the updated &lt;a href=&quot;https://developers.google.com/+/plugins/+1button/config?utm_source=blog&amp;amp;utm_medium=gplusplatform&amp;amp;utm_campaign=new1pixels&quot;&gt;configuration tool&lt;/a&gt; to see how these changes look across all the various sizes and shapes of the +1 button.&lt;br /&gt;
&lt;br /&gt;
We’ll update this post when these changes graduate to the public.&lt;br /&gt;
&lt;br /&gt;
Follow the conversation on &lt;a href=&quot;https://plus.google.com/117721923550684960973/posts/bQJkeHhXmLc&quot;&gt;Google+&lt;/a&gt;.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Posted by &lt;a href=&quot;https://plus.google.com/117721923550684960973&quot;&gt;Eric Steinlauf&lt;/a&gt;, Software Engineer, Google+&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/6884131687395025558-3077146136238968645?l=googleplusplatform.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/GppBxyz/~4/Ap9W2Jbs7d4&quot; width=&quot;1&quot; /&gt;</content>
 </entry>

 <entry>
 <title>A New Look for the +1 Button</title>
 <link href="http://feedproxy.google.com/~r/GppBxyz/~3/Ap9W2Jbs7d4/new-look-for-1-button.html"/>
 <id>tag:blogger.com,1999:blog-6884131687395025558.post-3077146136238968645</id>
 <published>2012-03-07T10:06:00.001-08:00</published>
 <updated>2012-03-07T15:28:16.753-08:00</updated>
 <summary type="html">Following in the footsteps of our new red and white Google+ icon, the +1 button is sporting a fresh coat of paint. Starting today, this update will be...</summary>
 <content type="html">Following in the footsteps of our new red and white &lt;a href=&quot;https://developers.google.com/+/plugins/badge/?utm_source=blog&amp;amp;utm_medium=gplusplatform&amp;amp;utm_campaign=new1pixels#static&quot; target=&quot;_blank&quot;&gt;Google+ icon&lt;/a&gt;, the +1 button is sporting a fresh coat of paint. Starting today, this update will be visible first to our &lt;a href=&quot;http://www.google.com/+/learnmore/platform-preview/?utm_source=blog&amp;amp;utm_medium=gplusplatform&amp;amp;utm_campaign=new1pixels&quot; target=&quot;_blank&quot;&gt;Google+ Platform Preview Group&lt;/a&gt; and shortly thereafter we’ll roll it out to the public.&lt;br /&gt;
&lt;br /&gt;
Check out the new pixels:&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://4.bp.blogspot.com/-ct8BIIqoL1s/T1egz5AVbcI/AAAAAAAAALM/iG2r_UICKe8/s1600/web-standard-rest+(1).png&quot; style=&quot;border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none;&quot; /&gt;&lt;br /&gt;
&lt;i style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;Before you’ve +1’d&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;img border=&quot;0&quot; src=&quot;http://1.bp.blogspot.com/-yswnos-64qM/T1eg_KXU5XI/AAAAAAAAALU/ltHL19AENs0/s1600/web-standard-activated-rest+(1).png&quot; style=&quot;border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none;&quot; /&gt;
&lt;span style=&quot;color: #999999; text-align: left;&quot;&gt;&lt;i&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;i style=&quot;color: #999999; text-align: left;&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&lt;i&gt;After you’ve +1’d&lt;/i&gt;&lt;/span&gt;&amp;nbsp;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The +1 buttons you’ve already installed will automatically update; there’s nothing you need to do. Stop by the updated &lt;a href=&quot;https://developers.google.com/+/plugins/+1button/config?utm_source=blog&amp;amp;utm_medium=gplusplatform&amp;amp;utm_campaign=new1pixels&quot;&gt;configuration tool&lt;/a&gt; to see how these changes look across all the various sizes and shapes of the +1 button.&lt;br /&gt;
&lt;br /&gt;
We’ll update this post when these changes graduate to the public.&lt;br /&gt;
&lt;br /&gt;
Follow the conversation on &lt;a href=&quot;https://plus.google.com/117721923550684960973/posts/bQJkeHhXmLc&quot;&gt;Google+&lt;/a&gt;.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Posted by &lt;a href=&quot;https://plus.google.com/117721923550684960973&quot;&gt;Eric Steinlauf&lt;/a&gt;, Software Engineer, Google+&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/6884131687395025558-3077146136238968645?l=googleplusplatform.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/GppBxyz/~4/Ap9W2Jbs7d4&quot; width=&quot;1&quot; /&gt;</content>
 </entry>

 <entry>
 <title>Announcing WindowTester open source release</title>
 <link href="http://feedproxy.google.com/~r/GoogleOpenSourceBlog/~3/ytZsNW5BmE8/announcing-windowtester-open-source.html"/>
 <id>tag:blogger.com,1999:blog-8698702854482141883.post-4575777964829422002</id>
 <published>2012-03-07T10:00:00.000-08:00</published>
 <updated>2012-03-07T10:00:00.335-08:00</updated>
 <summary type="html">We are thrilled to announce the open sourcing release of WindowTester Pro, a solution that automates the process of GUI testing. WindowTester Pro is shipped as a Eclipse...</summary>
 <content type="html">We are thrilled to announce the open sourcing release of &lt;a href=&quot;http://code.google.com/javadevtools/wintester/html/index.html&quot; target=&quot;blank&quot;&gt;WindowTester Pro&lt;/a&gt;, a solution that automates the process of &lt;a href=&quot;http://en.wikipedia.org/wiki/Graphical_user_interface&quot; target=&quot;blank&quot;&gt;GUI&lt;/a&gt; testing. WindowTester Pro is shipped as a &lt;a href=&quot;http://www.eclipse.org/&quot; target=&quot;blank&quot;&gt;Eclipse&lt;/a&gt; plugin and has support for Eclipse versions 3.5, 3.6 and 3.7. WindowTester Pro was previously offered by &lt;a href=&quot;http://www.instantiations.com/&quot; target=&quot;blank&quot;&gt;Instantiations Inc&lt;/a&gt;.&lt;br /&gt;
&lt;div class=&quot;&quot; style=&quot;text-align: center;&quot;&gt;
&lt;a href=&quot;http://3.bp.blogspot.com/-06D9vW899zo/T1UVwzlzLFI/AAAAAAAAAjo/miOdqN4SF1c/s1600/image02.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;188&quot; src=&quot;http://3.bp.blogspot.com/-06D9vW899zo/T1UVwzlzLFI/AAAAAAAAAjo/miOdqN4SF1c/s320/image02.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Using WindowTester Pro, developers can easily create tests for every GUI they create. The tests generated by WindowTester Pro are standard Java &lt;a href=&quot;http://www.junit.org/&quot; target=&quot;blank&quot;&gt;JUnit&lt;/a&gt; tests, thus they can be run within your Eclipse environment or they can be automated to run using &lt;a href=&quot;http://ant.apache.org/&quot; target=&quot;blank&quot;&gt;Ant&lt;/a&gt;. Tests can be generated for SWT and Swing Java applications.&lt;br /&gt;
&lt;br /&gt;
WindowTester Pro contains a recording console that captures and records keyboard clicks and mouse movements. The first step in test development is to turn on the Record feature and then work with various elements of the UI such as windows or buttons. WindowTester Pro will capture the steps taken.&lt;br /&gt;
&lt;div class=&quot;&quot; style=&quot;text-align: center;&quot;&gt;
&lt;a href=&quot;http://2.bp.blogspot.com/-zHvV5KWr6N8/T1UWDrsLoeI/AAAAAAAAAjw/jK1ppLzRObE/s1600/image00.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;160&quot; src=&quot;http://2.bp.blogspot.com/-zHvV5KWr6N8/T1UWDrsLoeI/AAAAAAAAAjw/jK1ppLzRObE/s320/image00.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Once the GUI has been exercised, the developer closes the application under test. When the application is closed, the recording is terminated and the test is generated.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;&quot; style=&quot;text-align: center;&quot;&gt;
&lt;a href=&quot;http://1.bp.blogspot.com/-tytCi0Gqaco/T1UWPUAKqRI/AAAAAAAAAj4/u2jkfvUA0Tw/s1600/image01.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;http://1.bp.blogspot.com/-tytCi0Gqaco/T1UWPUAKqRI/AAAAAAAAAj4/u2jkfvUA0Tw/s320/image01.png&quot; width=&quot;299&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Using WindowTester Pro empowers developers with testing capabilities and reduces the time required to hand-code tests. This enables developers to build quality into the product early in the process because problems are found and resolved earlier in the development cycle. WindowTester Pro can help developers and companies drastically lower both testing time and cost.&lt;br /&gt;
&lt;br /&gt;
For more information, please visit the &lt;a href=&quot;https://code.google.com/p/windowtester/&quot; target=&quot;blank&quot;&gt;WindowTester Pro home page&lt;/a&gt; or join the &lt;a href=&quot;https://groups.google.com/group/windowtester-pro&quot; target=&quot;blank&quot;&gt;discussion list&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
The Googlers who made this open sourcing release possible include Eric Clayberg, Keerti Parthasarathy, Mark Russell, and Seth Hollyman.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;By Keerti Parthasarathy, Software Engineer, Google&lt;/i&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/8698702854482141883-4575777964829422002?l=google-opensource.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?a=ytZsNW5BmE8:8PcZUQnSgds:yIl2AUoC8zA&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?d=yIl2AUoC8zA&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?a=ytZsNW5BmE8:8PcZUQnSgds:V_sGLiPBpWU&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?i=ytZsNW5BmE8:8PcZUQnSgds:V_sGLiPBpWU&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/GoogleOpenSourceBlog/~4/ytZsNW5BmE8&quot; width=&quot;1&quot; /&gt;</content>
 </entry>

 <entry>
 <title>Embedding Google AdMob Ads Within A UITableView</title>
 <link href="http://feedproxy.google.com/~r/GoogleAdsDeveloperBlog/~3/YkR8wDmM3zg/embedding-google-admob-ads-within.html"/>
 <id>tag:blogger.com,1999:blog-7815614485808579332.post-1610131341742643022</id>
 <published>2012-03-06T13:55:00.000-08:00</published>
 <updated>2012-03-06T13:55:43.947-08:00</updated>
 <summary type="html">We previously talked about docking AdMob ads to the bottom or top of a UITableView. In response to that post, we’ve had a lot of developers asking us...</summary>
 <content type="html">&lt;p&gt;We previously talked about &lt;a href=&quot;http://googleadsdeveloper.blogspot.com/2011/12/incorporating-google-admob-ads-into.html&quot;&gt;docking AdMob ads to the bottom or top of a UITableView&lt;/a&gt;. In response to that post, we’ve had a lot of developers asking us about embedding AdMob ads within the UITableView cells, so we wanted to share how this can be best achieved.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Challenge&lt;/b&gt;
&lt;br /&gt;
&lt;p&gt;Placing ads within a &lt;a href=&quot;http://developer.apple.com/library/IOS/#documentation/UIKit/Reference/UITableView_Class/Reference/Reference.html&quot;&gt;Table View&lt;/a&gt; in iOS as list items can bring up a number of issues:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Inflated impression numbers because tables in iOS refresh when the user scrolls.&lt;/li&gt;
&lt;li&gt;The one-to-one mapping between data in the Table View and the application’s model will usually be lost.&lt;/li&gt;
&lt;/ul&gt;

&lt;center&gt;&lt;img height=&quot;251px;&quot; src=&quot;https://lh3.googleusercontent.com/U7vBVizAJ1ivfe0TTgTKrB3MGKKJRI9M-IrdaUGWrgjLQUcam4GQLcKH7VXb52rjXd4gjlHG4N2b-OpnG97uS_1aLoGoew07Kkgrcln88wHzaWqI90w&quot; width=&quot;134px;&quot; /&gt;&lt;/center&gt;
&lt;br /&gt;&lt;br /&gt;

&lt;br /&gt;
&lt;b&gt;Choosing A Solution&lt;/b&gt;
&lt;p&gt;Table Views in iOS are populated by implementing the &lt;a href=&quot;http://developer.apple.com/library/ios/#documentation/uikit/reference/UITableViewDataSource_Protocol/Reference/Reference.html&quot;&gt;tableView:cellForRowAtIndexPath:&lt;/a&gt; method. Cell objects are often reused so that new ones aren’t instantiated each time the Table View is refreshed (by a scroll for example). There are two ways that ads can be implemented within Table View cells:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Only use one  GADBannerView throughout the table. This would mean that the same ad is displayed in different cells in the table (preferred).&lt;/li&gt;
&lt;li&gt;Leverage &lt;a href=&quot;https://developer.apple.com/library/ios/#DOCUMENTATION/UIKit/Reference/UITableView_Class/Reference/Reference.html&quot;&gt;dequeueReusableCellWithIdentifier:&lt;/a&gt; so that GADBannerViews are created only when new cells are created.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Using one GADBannerView throughout the table does decrease ad diversity but generally increases the CTR for the ads that are shown because the user will more likely see the ads that are displayed. The example below will show how to implement this approach as it is the better practice.&lt;/p&gt;&lt;br /&gt;

&lt;br /&gt;
&lt;b&gt;Solution - Single GADBannerView Method&lt;/b&gt;
&lt;br /&gt;
&lt;p&gt;For the purposes of this example, let’s assume that every 10th element in the list is going to be an ad. This means &lt;a href=&quot;http://developer.apple.com/library/ios/#documentation/uikit/reference/UITableViewDataSource_Protocol/Reference/Reference.html&quot;&gt;tableView:cellForRowAtIndexPath:&lt;/a&gt; will be set up with a conditional that modifies the placement of the GADBannerView for every tenth cell:&lt;/p&gt;&lt;br /&gt;

&lt;pre class=&quot;prettyprint&quot;&gt;
- (UITableViewCell *)tableView:(UITableView *)tableView
         cellForRowAtIndexPath:(NSIndexPath *)indexPath {
  int row = [indexPath row];

  // Assume that kFrequencyAdsInCells is 10 so every 10th row is an ad
  // Don&#39;t want first item to be an ad so use 10-1=9 instead of 0
  if ((row % kFrequencyAdsInCells) == (kFrequencyAdsInCells)) {
    cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
  
    //Need to create a new cell object
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero
                                       reuseIdentifier:CellIdentifier]
                autorelease];
    }
    // If bannerView_ has a superview, then it has been added to a cell
    if (!bannerView_.superview) {
      // First ad request made, make the ad request and add it to this cell
      [self requestAd];     
    }
    // The banner will be removed from the other cell and put into here
    [cell.contentView addSubview:bannerView_];


}
…
&lt;/pre&gt;

&lt;p&gt;Since ads are being inserted into the Table View now, any previous mapping to data in the model will be lost. Some quick math is necessary here to figure out how the rows in the Table View line up.&lt;/p&gt;

&lt;pre class=&quot;prettyprint&quot;&gt;
  // Complete in cellForRowAtIndexPath: if not ad
  
  // Make sure we get all of the items from our model
  row = row - floor((float)row/kFrequencyAdsInCells);
  
  cell.textLabel.text = [dataController_ objectInListAtIndex:row];
&lt;/pre&gt;

&lt;p&gt;The methods &lt;a href=&quot;http://developer.apple.com/library/ios/#documentation/uikit/reference/UITableViewDataSource_Protocol/Reference/Reference.html&quot;&gt;tableView:NumberOfRowsInSection:&lt;/a&gt; and &lt;a href=&quot;http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UITableViewDelegate_Protocol/Reference/Reference.html&quot;&gt;tableView:heightForRowAtIndexPath:&lt;/a&gt; will need to be modified as well. The method tableView:NumberOfRowsInSection: would now return the number of elements (including ads in that number) and  tableView:heightForRowAtIndexPath: would return the height of an ad for every tenth cell, respectively.&lt;/p&gt;

&lt;p&gt;If you have any questions about embedding ads within a UITableView, or even any questions about the SDK in general, feel free to post them in our &lt;a href=&quot;https://groups.google.com/forum/#!forum/google-admob-ads-sdk&quot;&gt;forum&lt;/a&gt;. Keep an eye out for AdCatalog v2 for all kinds of advanced layouts options integrated in the project.&lt;/p&gt;


&lt;span class=&quot;post-author&quot;&gt;&lt;a href=&quot;https://plus.google.com/102708799507737837368&quot;&gt;&lt;img height=&quot;20&quot; src=&quot;https://lh3.googleusercontent.com/-RonljIAjNbg/AAAAAAAAAAI/AAAAAAAAAps/nM93tw3iYSk/s200-c-k/photo.jpg?sz=20&quot; style=&quot;vertical-align: middle; border: none;&quot; width=&quot;20&quot; /&gt;&lt;/a&gt;&amp;nbsp;-&amp;nbsp;&lt;a href=&quot;https://plus.google.com/102708799507737837368&quot; rel=&quot;author&quot;&gt;Raj Parameswaran&lt;/a&gt;, AdMob Team&lt;/span&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7815614485808579332-1610131341742643022?l=googleadsdeveloper.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/GoogleAdsDeveloperBlog/~4/YkR8wDmM3zg&quot; width=&quot;1&quot; /&gt;</content>
 </entry>

 <entry>
 <title>Resources to help with the migration to AdWords API AdHoc reports</title>
 <link href="http://feedproxy.google.com/~r/GoogleAdsDeveloperBlog/~3/ciP0sI3tB5Y/resources-to-help-with-migration-to.html"/>
 <id>tag:blogger.com,1999:blog-7815614485808579332.post-7023252996454196102</id>
 <published>2012-03-06T12:32:00.001-08:00</published>
 <updated>2012-03-06T12:32:36.673-08:00</updated>
 <summary type="html">Last week we sunset all versions of the AdWords API prior to v201109. If you have not yet migrated to v201109, you will now receive errors when making...</summary>
 <content type="html">&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
Last week we &lt;a href=&quot;http://googleadsdeveloper.blogspot.com/2012/02/adwords-api-v201109-migration-deadline.html&quot;&gt;sunset&lt;/a&gt; all versions of the AdWords API prior to v201109. If you have not yet migrated to v201109, you will now receive errors when making calls using previous versions.&lt;br /&gt;&lt;br /&gt;

For users still working on the transition from v13 to AdHoc reports, we want to remind you of resources available to help you out:&lt;br /&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;a href=&quot;http://code.google.com/apis/adwords/docs/reportguide.html&quot;&gt;report migration guide&lt;/a&gt; provides a side-by-side mapping between the fields available in the v13 ReportService and those available in v201109.&lt;/li&gt;
&lt;li&gt;The &lt;a href=&quot;http://code.google.com/apis/adwords/docs/guides/uireports.html&quot;&gt;mapping report to the UI guide&lt;/a&gt; maps the concepts and naming conventions used in the User Interface (UI) and the AdWords API reports.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://code.google.com/apis/adwords/docs/guides/reporting.html&quot;&gt;Report basics&lt;/a&gt; covers how to structure and download reports.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://adwordsapi.blogspot.com/2011/06/statistics-in-reports.html&quot;&gt;This blogpost&lt;/a&gt; covers best practices for when to schedule reports, and &lt;a href=&quot;http://adwordsapi.blogspot.com/2011_10_01_archive.html&quot;&gt;this post&lt;/a&gt; covers how to download reports for multiple clients.&lt;/li&gt;
&lt;/ul&gt;

For additional resources visit the &lt;a href=&quot;http://code.google.com/apis/adwords/docs/&quot;&gt;AdWords API documentation&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;

We also encourage you to submit questions to the &lt;a href=&quot;https://groups.google.com/forum/#!forum/adwords-api&quot;&gt;forum&lt;/a&gt; or ask them during &lt;a href=&quot;http://code.google.com/apis/adwords/community/officehours.html&quot;&gt;office hours&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;

&lt;span class=&quot;post-author&quot;&gt;Post by Katie Miller, AdWords API Team&lt;/span&gt;
&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7815614485808579332-7023252996454196102?l=googleadsdeveloper.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/GoogleAdsDeveloperBlog/~4/ciP0sI3tB5Y&quot; width=&quot;1&quot; /&gt;</content>
 </entry>

 <entry>
 <title>Discover DFP API v201201: Syncing Up</title>
 <link href="http://feedproxy.google.com/~r/GoogleAdsDeveloperBlog/~3/uOiNHjdorrg/discover-dfp-api-v201201-syncing-up.html"/>
 <id>tag:blogger.com,1999:blog-7815614485808579332.post-2183826051204268000</id>
 <published>2012-03-06T11:00:00.000-08:00</published>
 <updated>2012-03-06T11:00:02.122-08:00</updated>
 <summary type="html">In the newest version of the API, v201201, we’ve added a feature to streamline the syncing of information in your DFP network to another system. Previously, this was...</summary>
 <content type="html">&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
In the newest version of the API, &lt;a href=&quot;http://googleadsdeveloper.blogspot.com/2012/02/announcing-v201201-of-dfp-api.html&quot;&gt;v201201&lt;/a&gt;, we’ve added a feature to streamline the syncing of information in your DFP network to another system. Previously, this was possible but required repeatedly downloading the same objects to see if they had been modified. Now, a new PQL field exists, &lt;a href=&quot;http://code.google.com/apis/dfp/docs/reference/v201201/LineItemService.LineItem.html#lastModifiedDateTime&quot;&gt;lastModifiedDateTime&lt;/a&gt;, which can be used to return objects based on their modification dates. Below is a PHP example that uses the &lt;a href=&quot;http://code.google.com/p/google-api-dfp-php/downloads/list&quot;&gt;latest client library&lt;/a&gt; to display all line items modified in the past 30 days. &lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;// Get the LineItemService.
$lineItemService = $user-&amp;gt;GetService(&#39;LineItemService&#39;, &#39;v201201&#39;);

// Calculate time from thirty days ago.
$thirtyDaysAgo = date(DateTimeUtils::$DFP_DATE_TIME_STRING_FORMAT,
    strtotime(&#39;-30 day&#39;));

// Create bind variables.
$vars = MapUtils::GetMapEntries(array(
    &#39;thirtyDaysAgo&#39; =&gt; new TextValue($thirtyDaysAgo)));

// Create statement object to only select line items that
// have been modified in the last 30 days.
$filterStatement = new Statement(
    &quot;WHERE lastModifiedDateTime &gt;= :thirtyDaysAgo &quot;
    . &quot;LIMIT 500&quot;, $vars);

// Get line items by statement.
$page = $lineItemService-&gt;getLineItemsByStatement($filterStatement);
&lt;/pre&gt;
You will notice that we utilized a constant, DFP_DATE_TIME_STRING_FORMAT (&#39;Y-m-d\TH:i:s&#39;),  from the library to easily format the date/time string. Also, keep in mind that the date and time specified should be in terms of the time zone that is configured for the network and any timezone specified in the string will be ignored by the server. &lt;br /&gt;
&lt;br /&gt;
We hope you&#39;ll use this new feature to help save bandwidth and processing time. You can check out a full working example in &lt;a href=&quot;http://code.google.com/p/google-api-dfp-php/source/browse/trunk/examples/v201201/LineItemService/GetRecentlyUpdatedLineItems.php&quot;&gt;PHP&lt;/a&gt; or other languages in our &lt;a href=&quot;http://code.google.com/apis/dfp/docs/clients.html&quot;&gt;client libraries&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Feel free to leave us a comment on the &lt;a href=&quot;https://groups.google.com/forum/?fromgroups#!forum/google-doubleclick-for-publishers-api&quot;&gt;forum&lt;/a&gt; with any feedback you have for the API or topics you would like to see in the discover series.&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;post-author&quot;&gt;&lt;a href=&quot;https://plus.google.com/104679465567407024302/&quot;&gt;&lt;img height=&quot;20&quot; src=&quot;https://lh5.googleusercontent.com/oQZTvGY1RNICm4p-kpeNseyIOgEfFdRDfMNyaMs0hrBVvzjZQODeEnRRPbHA0SoebObwNhQnL7bEDImdE16tYXjwViv-90GTbywThxtii7XS7MO3RzE?sz=20&quot; style=&quot;border: none; vertical-align: middle;&quot; width=&quot;20&quot; /&gt;&lt;/a&gt;&amp;nbsp;-&amp;nbsp;&lt;a href=&quot;https://plus.google.com/104679465567407024302/&quot; rel=&quot;author&quot;&gt;Paul Rashidi&lt;/a&gt;, DFP API Team&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7815614485808579332-2183826051204268000?l=googleadsdeveloper.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/GoogleAdsDeveloperBlog/~4/uOiNHjdorrg&quot; width=&quot;1&quot; /&gt;</content>
 </entry>

 <entry>
 <title>Introducing Google Play</title>
 <link href="http://feedproxy.google.com/~r/blogspot/hsDu/~3/csJwRSHwXME/introducing-google-play.html"/>
 <id>tag:blogger.com,1999:blog-6755709643044947179.post-1770198571571621188</id>
 <published>2012-03-06T10:10:00.000-08:00</published>
 <updated>2012-03-06T10:37:42.039-08:00</updated>
 <summary type="html">[This post is by Kenneth Lui, Android Developer Ecosystem. —Dirk Dougherty] For more than a year we’ve been focused on expanding the reach, content, and monetization opportunities of...</summary>
 <content type="html">&lt;br /&gt;
&lt;span style=&quot;font-style: italic;&quot;&gt;[This post is by Kenneth Lui, Android Developer Ecosystem. —Dirk Dougherty]&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-ZrvsOxe_OBA/T1W6xuCBMkI/AAAAAAAABZ4/uwCvJl0YRYs/s1600/gplay_logo_web_white.png&quot; style=&quot;clear: left; float: left; margin-left: 0em; margin-right: 1em; margin-bottom: 2.5em; margin-top: 1.5em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://3.bp.blogspot.com/-ZrvsOxe_OBA/T1W6xuCBMkI/AAAAAAAABZ4/uwCvJl0YRYs/s400/gplay_logo_web_white.png&quot; width=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/div&gt;For more than a year we’ve been focused on expanding the reach, content, and monetization opportunities of Android Market. We started by extending the store to users on the web and then went on to add books, movies, and music. The number of people who have visited, registered, and downloaded from the store has been amazing.&lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;Today we’re &lt;a href=&quot;http://googleblog.blogspot.com/2012/03/introducing-google-play-all-your.html&quot;&gt;launching Google Play&lt;/a&gt;, an integrated destination for apps, books, movies, and music, accessible to users on Android devices and to anyone on the Web.&lt;/span&gt; As part of this launch, Google Play replaces and extends Android Market &amp;mdash; users everywhere can now find their favorite apps and games in Google Play, with other digital content, all in one place.&lt;br /&gt;
&lt;br /&gt;
We believe that with a strong brand, compelling offerings, and a seamless purchasing and consumption experience, Google Play will drive more traffic and revenue to the entire ecosystem.&lt;br /&gt;
&lt;br /&gt;
We’ll be investing in the brand to bring Google Play to as many people as possible, and we’ll also invest in the latest digital content to keep Google Play fresh, relevant, and engaging. Apps and games remain the core of Google Play, so we’ll continue investing in new ways to connect users with their favorite apps, and developers with new customers.&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/p&gt;&lt;br /&gt;
As we grow and promote Google Play around the world, we’ll be marketing your apps and games at the same time. Our policies have not changed and our goal is still the same &amp;mdash; to create a great, open marketplace for distributing Android apps.&lt;br /&gt;
&lt;br /&gt;
Google Play is built on the same infrastructure as Android Market, so the transition for users and developers will be seamless. Users can sign into their existing accounts with the same credentials as before and purchase content using the same payment methods. As a developer, there’s no change needed to your published products and you can continue to use the same publishing tools to put your app in front of hundreds of millions of Android users. If your app was in Android Market yesterday, it’s in Google Play today. &lt;br /&gt;
&lt;br /&gt;
We’ll be rolling out Google Play to devices in a phased OTA update, starting today and continuing over the days to come. With the update, the Android Market app will upgrade to the Play Store app and the Music, Videos, and Books apps will upgrade to Play Music, Play Movies, and Play Books. This update is for devices running Android 2.2 or higher, and users on other devices will continue to have the same access to your apps as before. &lt;br /&gt;
&lt;br /&gt;
You can start sending customers to your products in Google Play right away. Check out the updated &lt;a href=&quot;http://www.android.com/developers/branding.html#google_play&quot;&gt;“Get it on Google Play”&lt;/a&gt; badges and look for an email with more details on the transition. In the meantime, you can &lt;!--learn more about Google Play in the Official Google Blog--&gt; check out the Google Play web site at the link below and join the discussion on &lt;a href=&quot;https://plus.google.com/108967384991768947849/posts/6KE34877xjB&quot;&gt;+Android&amp;nbsp;Developers&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;margin-left: 1.5em; margin-bottom: 1.5em;&quot;&gt;&lt;a href=&quot;http://play.google.com/about&quot;&gt;http://play.google.com&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/6755709643044947179-1770198571571621188?l=android-developers.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/blogspot/hsDu?a=csJwRSHwXME:miR2DpYdChQ:yIl2AUoC8zA&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/blogspot/hsDu?d=yIl2AUoC8zA&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/blogspot/hsDu?a=csJwRSHwXME:miR2DpYdChQ:-BTjWOF_DHI&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/blogspot/hsDu?i=csJwRSHwXME:miR2DpYdChQ:-BTjWOF_DHI&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/blogspot/hsDu/~4/csJwRSHwXME&quot; width=&quot;1&quot; /&gt;</content>
 </entry>

 <entry>
 <title>Frequently Asked Questions for the AdSense Management API</title>
 <link href="http://feedproxy.google.com/~r/GoogleAdsDeveloperBlog/~3/WeV4wELXzCU/frequently-asked-questions-for-adsense.html"/>
 <id>tag:blogger.com,1999:blog-7815614485808579332.post-7135452032724814135</id>
 <published>2012-03-06T05:35:00.000-08:00</published>
 <updated>2012-03-06T05:35:43.027-08:00</updated>
 <summary type="html">Since launching the AdSense Management API in October last year, we’ve received a number of questions and feedback from you while coding your applications. Today, we’ll address the...</summary>
 <content type="html">&lt;p&gt;Since launching the &lt;a href=&quot;https://developers.google.com/adsense/management/&quot;&gt;AdSense Management API&lt;/a&gt; in October last year, we’ve received a number of questions and feedback from you while coding your applications. Today, we’ll address the most frequently asked questions and share some best practices.&lt;/p&gt;


&lt;h2&gt;How do I authenticate? Do I need to use OAuth?&lt;/h2&gt;

&lt;p&gt;Right now, the only authentication method we support is OAuth, but don’t let that intimidate you; OAuth 2.0 supports several authentication methods, for web server, client-side and installed applications and devices, which together cover all use cases.&lt;/p&gt;

&lt;p&gt;You can find more information on how to authenticate in your favourite client library language in our &lt;a href=&quot;https://developers.google.com/adsense/management/complete_guide#auth&quot;&gt;client library guide&lt;/a&gt; or the more generic &lt;a href=&quot;https://developers.google.com/accounts/docs/OAuth2&quot;&gt;OAuth 2.0 documentation&lt;/a&gt;.&lt;/p&gt;


&lt;h2&gt;How do I stop my users from having to authorize my application every time they use it?&lt;/h2&gt;

&lt;p&gt;If you don’t take steps to store your users’ authentication data or set the appropriate flags on your request, the authentication process will run them through a permission-granting dialog similar to the one below every time:&lt;/p&gt;

&lt;br /&gt;
&lt;a href=&quot;http://2.bp.blogspot.com/-C2nngT6CVt8/T1YQxUPQDtI/AAAAAAAAAH0/Cy3QsbnQh_Q/s1600/consent1.png&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;270&quot; src=&quot;http://2.bp.blogspot.com/-C2nngT6CVt8/T1YQxUPQDtI/AAAAAAAAAH0/Cy3QsbnQh_Q/s320/consent1.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;



&lt;p&gt;In order to avoid this and improve the experience for users of your web or installed application, you should store their authentication data.&lt;/p&gt;

&lt;p&gt;There are two types of token that we need to know about here: &lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;access tokens&lt;/span&gt; and &lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;refresh tokens&lt;/span&gt;. Access tokens give you immediate access to a user’s data, and are short-lived, whereas refresh tokens are long-lived, allowing you to generate new access tokens when you need them, even if the user isn’t present.&lt;/p&gt;

&lt;p&gt;For installed or web applications we recommend storing both, and using the refresh token to generate a new access token whenever the one you stored expires.&lt;/p&gt;

&lt;p&gt;For client-side applications, things should be a little easier, as all it should take is a redirect. The &lt;a href=&quot;https://developers.google.com/accounts/docs/OAuth2UserAgent&quot;&gt;OAuth 2.0 documentation for client-side applications&lt;/a&gt; has all the information you need.&lt;/p&gt;

&lt;p&gt;For more information on request tokens, you can check the &lt;a href=&quot;https://developers.google.com/accounts/docs/OAuth2InstalledApp#refresh&quot;&gt;relevant section in the OAuth 2.0 documentation&lt;/a&gt;, or the &lt;a href=&quot;https://developers.google.com/adsense/management/complete_guide#auth_persist&quot;&gt;“Persisting authentication data” section&lt;/a&gt; in our client library guide if you’re using one of the client libraries.&lt;/p&gt;


&lt;h2&gt;How often can I run my report queries?&lt;/h2&gt;

&lt;p&gt;Every application has different needs, so the answer to this question will no doubt depend on what you’re doing. There are, however, a few guidelines we can give you.&lt;/p&gt;

&lt;p&gt;First of all, try to collect data on the same frequency that you analyze it. That is, if you’re interested in daily performance, there’s no need for you to collect data more often than once a day, as our reporting can compile that data for you.&lt;/p&gt;

&lt;p&gt;On the other hand, if you’re trying to get data as frequently as possible, bear in mind that we cache our report data for 60 seconds. There’s thus no point in running the same report more often than once a minute; the data you get won’t be any fresher, and you’ll just be wasting your request quota.&lt;/p&gt;


&lt;h2&gt;How do I get my performance data per country / domain?&lt;/h2&gt;

&lt;p&gt;Most reports are based on a time dimension such as &lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;DATE&lt;/span&gt;, &lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;WEEK&lt;/span&gt; or &lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;MONTH&lt;/span&gt;, which is to say that they’re grouped by that particular dimension.&lt;/p&gt;

&lt;p&gt;Not all reports need to be based on a time dimension, however. In fact, a very useful report for those of you with many international visitors is to get a breakdown of visitors per country. In order to get that, just set your start and end dates and choose &lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;COUNTRY_CODE&lt;/span&gt; or &lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;COUNTRY_NAME&lt;/span&gt; as the dimension.&lt;/p&gt;

&lt;p&gt;You can combine both approaches as well, to get a breakdown per country for every month, for example.&lt;/p&gt;

&lt;p&gt;To get some more background on reports and the concepts behind them, check out our &lt;a href=&quot;http://adsenseapi.blogspot.com/2011/11/adsense-management-api-diving-into.html&quot;&gt;Diving into Reports blog post&lt;/a&gt;.&lt;/p&gt;


&lt;h2&gt;What should I do if my question isn’t answered here?&lt;/h2&gt;

&lt;p&gt;We’ve got a whole bunch of resources for you, from the &lt;a href=&quot;https://developers.google.com/adsense/management/v1.1/reference/&quot;&gt;reference documentation&lt;/a&gt; to our &lt;a href=&quot;https://developers.google.com/adsense/management/complete_guide&quot;&gt;client library guide&lt;/a&gt; and &lt;a href=&quot;https://developers.google.com/adsense/management/libraries&quot;&gt;code examples for several programming languages&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If that doesn’t help, take a look in &lt;a href=&quot;https://developers.google.com/adsense/community/&quot;&gt;our forum&lt;/a&gt;, and you might find a similar question or get a chance to post your own. You can also join us in a Hangout during our regular &lt;a href=&quot;https://developers.google.com/adsense/community/officehours&quot;&gt;office hours&lt;/a&gt;. We’ll be around to give you a hand in either case!&lt;/p&gt;

&lt;p&gt;&lt;span class=&quot;post-author&quot;&gt;&lt;a href=&quot;http://plus.google.com/u/0/112096250552967536954/about&quot;&gt;&lt;img height=&quot;20&quot; src=&quot;https://lh5.googleusercontent.com/-4-fuZGAEbvk/AAAAAAAAAAI/AAAAAAAAABI/QRvIXrk01T8/photo.jpg?sz=20&quot; style=&quot;vertical-align: middle; border: none;&quot; width=&quot;20&quot; /&gt;&lt;/a&gt;&amp;nbsp;-&amp;nbsp;&lt;a href=&quot;http://plus.google.com/u/0/112096250552967536954/about&quot; rel=&quot;author&quot;&gt;Sérgio Gomes&lt;/a&gt;, AdSense API Team&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7815614485808579332-7135452032724814135?l=googleadsdeveloper.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/GoogleAdsDeveloperBlog/~4/WeV4wELXzCU&quot; width=&quot;1&quot; /&gt;</content>
 </entry>

 
</feed>
