OpenSocial done right I mplementing OpenSocial for 16m users Bastian Hofmann Montag, 31. Mai 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net Agenda What is a Gadget? What is OpenSocial? What about privacy? How do you integrate OpenSocial in your site? How to enrich the user experience beyond that? 2 Montag, 31. Mai 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net About VZ-Netzwerke three networks 40% daily logins 16.5 million users 30 minutes per user per day 3 Montag, 31. Mai 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net Visits April 2010 (I VW) VZ 440.719.168 T -Online 403.820.631 MSN 254.417.174 Yahoo 196.320.307 WKW 168.762.246 Bild 137.471.037 ProSieben 133.225.524 SPON 124.266.343 0 250.000.000 500.000.000 4 Montag, 31. Mai 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net and compared with monthly TV reach Every VZ-Network surpasses TV in the digital native user group (14 - 29) 5 Montag, 31. Mai 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net Apps at VZ-Netzwerke over 60 Apps in Gallery, ca. 140 Apps live Launch Dec. 2009 over 14 million installations 9 million daily page impressions in canvas view 6 Montag, 31. Mai 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net What is a Gadget? XML file with HTML and JavaScript (and CSS, Images, Flash, ...) Application based on the Google Gadgets specification Can be included on various platforms, which support this specification 7 Montag, 31. Mai 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net How to include gadgets? The Gadget Server renders the Gadget XML provides the JavaScript API provides the REST (or RPC) API Rendered result is included through an <iframe> into the parent page (Container) 8 Montag, 31. Mai 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net Gadget Features Gadget specification includes a rich JavaScript API with a multitude of features preferences views dynamic-height flash io ... Extendabel 9 Montag, 31. Mai 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net One Gadget - Different Views Profile Canvas Preview Group Popup Integration 10 Montag, 31. Mai 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net Example <?xml version="1.0" encoding="UTF-8"?> <Module> <ModulePrefs title="HelloWorld Gadget" > <Require feature="views" /> </ModulePrefs> <Content type="html" view="profile"><![CDATA[ < h1 >Hello World!</ h1 > < a href="javascript:gadgets.views.requestNavigateTo( gadgets.views.getSupportedViews()['canvas'], {'name':'Bastian'})">go to canvas</ a > ]]></Content> <Content type="html" view="canvas,popup"><![CDATA[ < h1 id="View"></ h1 >< h1 id="Greeting"></ h1 > < script type="text/javascript" > gadgets.util.registerOnLoadHandler( function () { document.getElementById('View').innerHTML = 'This is the ' + gadgets.views.getCurrentView().getName() + ' view'; document.getElementById('Greeting').innerHTML = 'Hello ' + gadgets.views.getParams()['name']; }); </ script > ]]></Content> </Module> 11 Montag, 31. Mai 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net Example <?xml version="1.0" encoding="UTF-8"?> <Module> <ModulePrefs title="HelloWorld Gadget" > <Require feature="views" /> </ModulePrefs> <Content type="html" view="profile"><![CDATA[ < h1 >Hello World!</ h1 > < a href="javascript:gadgets.views.requestNavigateTo( gadgets.views.getSupportedViews()['canvas'], {'name':'Bastian'})">go to canvas</ a > ]]></Content> <Content type="html" view="canvas,popup"><![CDATA[ < h1 id="View"></ h1 >< h1 id="Greeting"></ h1 > < script type="text/javascript" > gadgets.util.registerOnLoadHandler( function () { document.getElementById('View').innerHTML = 'This is the ' + gadgets.views.getCurrentView().getName() + ' view'; document.getElementById('Greeting').innerHTML = 'Hello ' + gadgets.views.getParams()['name']; }); </ script > ]]></Content> </Module> 11 Montag, 31. Mai 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net Example <?xml version="1.0" encoding="UTF-8"?> <Module> <ModulePrefs title="HelloWorld Gadget" > <Require feature="views" /> </ModulePrefs> <Content type="html" view="profile"><![CDATA[ < h1 >Hello World!</ h1 > < a href="javascript:gadgets.views.requestNavigateTo( gadgets.views.getSupportedViews()['canvas'], {'name':'Bastian'})">go to canvas</ a > ]]></Content> <Content type="html" view="canvas,popup"><![CDATA[ < h1 id="View"></ h1 >< h1 id="Greeting"></ h1 > < script type="text/javascript" > gadgets.util.registerOnLoadHandler( function () { document.getElementById('View').innerHTML = 'This is the ' + gadgets.views.getCurrentView().getName() + ' view'; document.getElementById('Greeting').innerHTML = 'Hello ' + gadgets.views.getParams()['name']; }); </ script > ]]></Content> </Module> 11 Montag, 31. Mai 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net Example <?xml version="1.0" encoding="UTF-8"?> <Module> <ModulePrefs title="HelloWorld Gadget" > <Require feature="views" /> </ModulePrefs> <Content type="html" view="profile"><![CDATA[ < h1 >Hello World!</ h1 > < a href="javascript:gadgets.views.requestNavigateTo( gadgets.views.getSupportedViews()['canvas'], {'name':'Bastian'})">go to canvas</ a > ]]></Content> <Content type="html" view="canvas,popup"><![CDATA[ < h1 id="View"></ h1 >< h1 id="Greeting"></ h1 > < script type="text/javascript" > gadgets.util.registerOnLoadHandler( function () { document.getElementById('View').innerHTML = 'This is the ' + gadgets.views.getCurrentView().getName() + ' view'; document.getElementById('Greeting').innerHTML = 'Hello ' + gadgets.views.getParams()['name']; }); </ script > ]]></Content> </Module> 11 Montag, 31. Mai 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net Example <?xml version="1.0" encoding="UTF-8"?> <Module> <ModulePrefs title="HelloWorld Gadget" > <Require feature="views" /> </ModulePrefs> <Content type="html" view="profile"><![CDATA[ < h1 >Hello World!</ h1 > < a href="javascript:gadgets.views.requestNavigateTo( gadgets.views.getSupportedViews()['canvas'], {'name':'Bastian'})">go to canvas</ a > ]]></Content> <Content type="html" view="canvas,popup"><![CDATA[ < h1 id="View"></ h1 >< h1 id="Greeting"></ h1 > < script type="text/javascript" > gadgets.util.registerOnLoadHandler( function () { document.getElementById('View').innerHTML = 'This is the ' + gadgets.views.getCurrentView().getName() + ' view'; document.getElementById('Greeting').innerHTML = 'Hello ' + gadgets.views.getParams()['name']; }); </ script > ]]></Content> </Module> 11 Montag, 31. Mai 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net Example <?xml version="1.0" encoding="UTF-8"?> <Module> <ModulePrefs title="HelloWorld Gadget" > <Require feature="views" /> </ModulePrefs> <Content type="html" view="profile"><![CDATA[ < h1 >Hello World!</ h1 > < a href="javascript:gadgets.views.requestNavigateTo( gadgets.views.getSupportedViews()['canvas'], {'name':'Bastian'})">go to canvas</ a > ]]></Content> <Content type="html" view="canvas,popup"><![CDATA[ < h1 id="View"></ h1 >< h1 id="Greeting"></ h1 > < script type="text/javascript" > gadgets.util.registerOnLoadHandler( function () { document.getElementById('View').innerHTML = 'This is the ' + gadgets.views.getCurrentView().getName() + ' view'; document.getElementById('Greeting').innerHTML = 'Hello ' + gadgets.views.getParams()['name']; }); </ script > ]]></Content> </Module> 11 Montag, 31. Mai 2010
More recommend