SlideShare a Scribd company logo
1 of 44
Yahoo! Blueprint Platform CL Asia Team August 2008
Agenda ,[object Object],[object Object],[object Object],[object Object]
Building Mobile Applications Multiple brands – Multiple phone models Multiple Operating Systems Different screen resolutions Different memory capabilities
Blueprint coverage Coverage Symbian Java ME XHTML Blueprint Technology iPhone Android
Yahoo! Blueprint Platform ,[object Object],Widget Gallery Editor Picks MTV Asia Movies Yahoo! Cricket Mobile Widgets
Yahoo! Blueprint Platform ,[object Object],[object Object],[object Object],[object Object],The MySpace Mobile Widget built on Yahoo! Blueprint
Blueprint Mobile Platform Open Platform Easy to Mobilize Maximum Reach Free!
Write once, run it across multiple devices, platforms and operating systems Yahoo! Go 3.0 Downloadable Java app Yahoo! Mobile Homepage http:// beta.m.yahoo.com Covers 270+ phone models 2+ Million active users / per month Customized rendering for iPhone, HTML and xHTML browsers 28+ Million active users / per month  2 ways for user to access your widget
Available Now  ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Building Mobile Widgets What Do I Need?  Any web-Server Use any scripting language Use any existing publishing tools Return Blueprint!
Widgets  Development Process
Building Mobile Widget ,[object Object],1 Download the Blueprint SDK
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Building Mobile Widget 1 Download the Blueprint SDK
Building Mobile Widget Yahoo! Server Widget  Submission Application Package Widget Request Widget Content HTTP Request Blueprint (XML) Your  Web Server 2 3 2. Create static/dynamic pages to return Blueprint 3. Create your application package and submit 2 Develop your widget
Building Mobile Widget Yahoo! Server Your Server Mobile Phone User opens Widget Request entry point HTTP request to Widget publisher URI specified in config.xml Includes language and location headers Blueprint page returned Includes Content-Type header; may include cache-control headers; may include cookies for Widget publisher Widget content returned (Cookies stored on Yahoo! server) User requests new data HTTP request … Request new content Data flow
Building Mobile Widget Interfacing with Yahoo! Servers Content Types: Content-Type: application/x-ywidget+xml Content-Type: application/x-ysnippet+xml Use only the UTF-8 character set. Using Cookies: Your server can set/retrieve cookies exactly as if you are serving HTML instead of Blueprint markup. The cookies are stored on Yahoo! servers Cache Control: Wherever possible, Blueprint pages are cached on the user’s device. To control caching, use the following standard HTTP headers when serving pages: Cache-Control, ETag, and If-None-Match. Only these headers affect caching
Building Mobile Widget Interfacing with Yahoo! Servers Internationalization and Localization: When Yahoo! Mobile application server sends a page request, the request may contain several  HTTP headers, including: Accept-Language RFC 4646/4647 language code (Example: Accept-Language: en-US) Geo-Country ISO 3166 country or UN M.49 region code (Example: Geo-Country: CA) You can use the information in the headers to decide what content to return.
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Building Mobile Widget 3 Package your widget
[object Object],[object Object],[object Object],Building Mobile Widget 4 Upload your mobile widget
[object Object],[object Object],Building Mobile Widget ,[object Object],[object Object],5 Test your mobile widget
[object Object],[object Object],[object Object],Building Mobile Widget 6 Publish your mobile widget
Widgets development process Summary 1 2 3 4 5 6 Download the Blueprint SDK Develop your widget Package your widget Upload your mobile widget Test your mobile widget Publish your mobile widget
Blueprint Language
Overview of the Blueprint Language Containers Controls Inline elements Containers are Grouping elements. They contain containers as well as controls and inline elements Controls presents content to the user and allow data input. They contain other controls as well as inline elements Inline elements contain text, references, or simple presentation constructs. Form-support components Events Actions UI Elements Non UI Elements includes
Overview of the Blueprint Language Hello World! Widget Example Note: Please check Blueprint documentation to know about all the other constructs UI Elements: Containers Contains inline data (text, images, spans) block Contains blocks, controls and nested modules module A wrapper for the display elements within a Widget page. Contains modules content A single screen in a widget. Includes a content element, which contains at least one module page <page> <content> <module> <header layout=&quot;simple&quot;> <layout-items> <block>Greeting</block> </layout-items> </header> <block>Hello World!</block> </module> </content> </page>
Overview of the Blueprint Language <Page> <content> (Exactly one) <models> (Zero or one) <page-header> (Zero or one) <controls> (Zero or more) <controls> (Zero or more) <Data> (Text) <module> (One or more) <block> (Zero or more) <Inline elements> (Zero or more) <module> (Zero or more) Widget Structure
Overview of the Blueprint Language <page> <page-header> <masthead layout=&quot;simple&quot;> <layout-items> <block>My Widget</block> </layout-items> </masthead> </page-header> <content> <module> <header layout=&quot;simple&quot;> <layout-items> <block>Greeting</block> </layout-items> </header> <block>Hello World!</block> </module> </content> </page> Page Header Blueprint (XML) UI Elements: Controls A title (with an optional icon) for a page page-header
Overview of the Blueprint Language <page> <page-header> <masthead layout=&quot;simple&quot;> <layout-items> <block>My Widget</block> </layout-items> </masthead> </page-header> <content> <module> <header layout=&quot;simple&quot;> <layout-items> <block>Greeting</block> </layout-items> </header> <block>Hello World!</block> </module> </content> </page> Header for module Blueprint (XML) UI Elements: Controls A title (with an optional icon) for a module header
Overview of the Blueprint Language <page> … <content> … <module> <placard layout=&quot;card&quot;> <layout-items> <block class=&quot;title&quot;>Capricorn</block> <block class=&quot;description&quot;>Dec 22 - Jan 19</block> <image size=&quot;medium“ resource=&quot;http://../c.jpg&quot;/> </layout-items> <load event=&quot;activate&quot; resource=&quot;h?t=d&amp;ss=c&quot;/> </placard>  </module> … </content> </page> Placard with image, text and sub-text Blueprint (XML) UI Elements: Controls Provides flexible predefined layouts using blocks and images placard
Overview of the Blueprint Language <page> <content> <module> <header layout=&quot;simple&quot;> <layout-items> <block>Greeting</block> </layout-items> </header> <block>Hello World!</block> <trigger appearance=&quot;button&quot;> <label>Click Me</label> <load event=&quot;activate&quot; resource=&quot;http://../c.html&quot;/> </trigger> </module> </content> </page> Use Trigger or Submit to create a button Blueprint (XML) UI Elements: Controls A button or clickable label trigger
Overview of the Blueprint Language < <page> <content> <options> <option> <label>Delete</label> <load-page event=&quot;activate&quot; page=&quot;delete.bp&quot;/> </option> <option> <label>Reply</label> <load-page event=&quot;activate&quot; page=&quot;reply.bp&quot;/> </option> <option> <label>More</label> <load-page event=&quot;activate&quot; page=&quot;more.bp&quot;/> </option> </options> <module> … </module> </content> </page> Blueprint (XML) UI Elements: Controls A choosable item  that usually appears on a main menu Option
Overview of the Blueprint Language <page> <content> <module> … <navigation-bar> <back> <label>Back to Inbox</label> <load event=&quot;activate&quot; resource=&quot;back.php&quot;/> </back> <prev> <label>Prev</label> <load event=&quot;activate&quot; resource=&quot;prev.php&quot;/> </prev> <next> <label>Next</label> <load event=&quot;activate&quot; resource=&quot;next.php&quot;/> </next> </navigation-bar> </module> </content> </page> Blueprint (XML) UI Elements: Controls A navigation bar with next/back buttons navigation-bar
Overview of the Blueprint Language <page> <models> <model> <instance> <data xmlns=&quot;&quot;> <name/> </data> </instance> <submission resource=&quot;q.php&quot; method=&quot;urlencoded-post&quot;/> </model> </models> <content> ... <module> … <input ref=&quot;name&quot;> <label>Name:</label> </input> <submit appearance=&quot;button&quot;> <label>Get Quotes</label> </submit> </module> </content> </page> Input Forms, Events and Actions A single line edit box for data entry Input
Step by Step Tutorial   Building a “Hello World” widget
Building a “Hello World” widget Yahoo! Server Widget  Submission Application Package Widget Request Widget Content HTTP Request Blueprint (XML) Your  Web Server 2 2. Write static/dynamic pages to return Blueprint 2 Develop your widget
Building a “Hello World” widget Your  Web Server 2 <?php header( &quot;Content-Type: application/x-ywidget+xml&quot; ); header( &quot;Cache-Control: no-cache&quot; ); require_once( &quot;lib/blueprint.php&quot; ); blueprintSetErrorHandler(); $writer = new XMLWriter(); $writer->openMemory(); $writer->setIndent( true ); // Create Page and Section nodes $page = new Blueprint_Page(); $module = new Blueprint_Module(); $page->addContent( $module ); // Add main content block $module->addContent( new Blueprint_Block( &quot;Hello World!&quot; ) ); $module->setHeader ( &quot;Greeting&quot; ); // Write everything to memory buffer $page->Emit( $writer ); // Return buffer & flush print( $writer->outputMemory() ); ?> Server (Using PHP 5.2 and above)
Building a “Hello World” widget Your  Web Server 2 Blueprint (XML) Blueprint (XML) Server (Using PHP 5.2 and above) <page> <content> <module> <header layout=&quot;simple&quot;> <layout-items> <block>Greeting</block> </layout-items> </header> <block>Hello World!</block> </module> </content> </page>
Building a “Hello World” widget Yahoo! Server Widget  Submission Application Package Widget Request Widget Content HTTP Request Blueprint (XML) Your  Web Server 3 3. Create your application package and submit 3 Package your application
Building a “Hello World” widget <?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?> <config xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xmlns=&quot;http://mobile.yahoo.com/widgets/schema/1.0/config/&quot; xsi:schemaLocation=&quot;...&quot;> <title>Hello World!</title> <version>1.0</version> <identifier>hello-world-1</identifier> <description>My Hello World! Widget</description> <icon>ybang</icon>  <author organization=&quot;Yahoo! Inc&quot; href=&quot;http://www.yahoo.com&quot; email=&quot;pkirtane@yahoo-inc.com&quot;> Prashant Kirtane </author> <!-- change this widget base to your server url --> <widget base=&quot;http://yourserver.com/HelloWorld/&quot;> <preview> <icon>ybang</icon>  <label>Hello World!</label> </preview> <shortcuts> <item default=&quot;true&quot;> <label>Y! Mobile</label> <href>test.php</href>    </item> </shortcuts> </widget> </config> Widget  Submission 3 Yahoo! Server Application Package Application Package (config.xml)
Building a “Hello World” widget <?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?> <gallery xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xmlns=&quot;http://mobile.yahoo.com/widgets/schema/1.0/gallery/&quot; xsi:schemaLocation=&quot;...&quot;> <description lang=&quot;en&quot;>  Hello World! Widget </description> <tags>  <!-- Use tags which identify your widget to other users --> <tag>Yahoo!</tag> <tag>Mobile</tag> <tag>widget</tag> <tag>development</tag> </tags> <languages>  <!-- Use languages your widget supports --> <lang>en-US</lang> <lang>en-UK</lang> </languages> </gallery> Widget  Submission 3 Yahoo! Server Application Package Application Package (gallery.xml)
Building a “Hello World” widget Widget  Submission 3 Yahoo! Server Application Package Application Package (HelloWorld/resources/images)
[object Object],[object Object],[object Object],Building a “Hello World” widget 4 Upload your mobile widget “HelloWorld.zip”
Building a “Hello World” widget Yahoo! Mobile Front-page   http://beta.m.yahoo.com Hello World! Widget My Widget page http://beta.m.yahoo.com 5 Test your mobile “HelloWorld” widget
開始動手作一個你自己的手機 Widget ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]

More Related Content

More from Joseph Chiang

前端的未來 - 前端工程實務訓練
前端的未來 - 前端工程實務訓練前端的未來 - 前端工程實務訓練
前端的未來 - 前端工程實務訓練Joseph Chiang
 
Performance 入門 - 前端工程開發實務訓練
Performance 入門 - 前端工程開發實務訓練Performance 入門 - 前端工程開發實務訓練
Performance 入門 - 前端工程開發實務訓練Joseph Chiang
 
Debugging - 前端工程開發實務訓練
 Debugging - 前端工程開發實務訓練 Debugging - 前端工程開發實務訓練
Debugging - 前端工程開發實務訓練Joseph Chiang
 
Javascript 入門 - 前端工程開發實務訓練
Javascript 入門 - 前端工程開發實務訓練Javascript 入門 - 前端工程開發實務訓練
Javascript 入門 - 前端工程開發實務訓練Joseph Chiang
 
Node.js 入門 - 前端工程開發實務訓練
Node.js 入門 - 前端工程開發實務訓練Node.js 入門 - 前端工程開發實務訓練
Node.js 入門 - 前端工程開發實務訓練Joseph Chiang
 
前端工程開發實務訓練
前端工程開發實務訓練前端工程開發實務訓練
前端工程開發實務訓練Joseph Chiang
 
YUI 教學 - 前端工程開發實務訓練
YUI 教學 - 前端工程開發實務訓練YUI 教學 - 前端工程開發實務訓練
YUI 教學 - 前端工程開發實務訓練Joseph Chiang
 
CSS 入門 - 前端工程開發實務訓練
CSS 入門 - 前端工程開發實務訓練CSS 入門 - 前端工程開發實務訓練
CSS 入門 - 前端工程開發實務訓練Joseph Chiang
 
HTML 入門 - 前端工程開發實務訓練
HTML 入門 - 前端工程開發實務訓練HTML 入門 - 前端工程開發實務訓練
HTML 入門 - 前端工程開發實務訓練Joseph Chiang
 
模块加载策略 - 2012 SDCC, 北京
模块加载策略 - 2012 SDCC, 北京模块加载策略 - 2012 SDCC, 北京
模块加载策略 - 2012 SDCC, 北京Joseph Chiang
 
YUI is Sexy (for JSDC.tw)
YUI is Sexy (for JSDC.tw)YUI is Sexy (for JSDC.tw)
YUI is Sexy (for JSDC.tw)Joseph Chiang
 
YUI is Sexy - 使用 YUI 作為開發基礎
YUI is Sexy - 使用 YUI 作為開發基礎YUI is Sexy - 使用 YUI 作為開發基礎
YUI is Sexy - 使用 YUI 作為開發基礎Joseph Chiang
 
Git - The Social Coding System
Git - The Social Coding SystemGit - The Social Coding System
Git - The Social Coding SystemJoseph Chiang
 
分享無名小站 API
分享無名小站 API分享無名小站 API
分享無名小站 APIJoseph Chiang
 
yui3 is Sexy - 使用 YUI 3 的 Sexy Part !
yui3 is Sexy - 使用 YUI 3 的 Sexy Part !yui3 is Sexy - 使用 YUI 3 的 Sexy Part !
yui3 is Sexy - 使用 YUI 3 的 Sexy Part !Joseph Chiang
 
建立前端開發團隊 - 2011 中華電信訓練所版
建立前端開發團隊 - 2011 中華電信訓練所版建立前端開發團隊 - 2011 中華電信訓練所版
建立前端開發團隊 - 2011 中華電信訓練所版Joseph Chiang
 
不用不可之 Fiddler Debugging Proxy!
不用不可之 Fiddler Debugging Proxy!不用不可之 Fiddler Debugging Proxy!
不用不可之 Fiddler Debugging Proxy!Joseph Chiang
 

More from Joseph Chiang (20)

F2E, the Keystone
F2E, the KeystoneF2E, the Keystone
F2E, the Keystone
 
前端的未來 - 前端工程實務訓練
前端的未來 - 前端工程實務訓練前端的未來 - 前端工程實務訓練
前端的未來 - 前端工程實務訓練
 
Performance 入門 - 前端工程開發實務訓練
Performance 入門 - 前端工程開發實務訓練Performance 入門 - 前端工程開發實務訓練
Performance 入門 - 前端工程開發實務訓練
 
Debugging - 前端工程開發實務訓練
 Debugging - 前端工程開發實務訓練 Debugging - 前端工程開發實務訓練
Debugging - 前端工程開發實務訓練
 
Javascript 入門 - 前端工程開發實務訓練
Javascript 入門 - 前端工程開發實務訓練Javascript 入門 - 前端工程開發實務訓練
Javascript 入門 - 前端工程開發實務訓練
 
Node.js 入門 - 前端工程開發實務訓練
Node.js 入門 - 前端工程開發實務訓練Node.js 入門 - 前端工程開發實務訓練
Node.js 入門 - 前端工程開發實務訓練
 
前端工程開發實務訓練
前端工程開發實務訓練前端工程開發實務訓練
前端工程開發實務訓練
 
YUI 教學 - 前端工程開發實務訓練
YUI 教學 - 前端工程開發實務訓練YUI 教學 - 前端工程開發實務訓練
YUI 教學 - 前端工程開發實務訓練
 
CSS 入門 - 前端工程開發實務訓練
CSS 入門 - 前端工程開發實務訓練CSS 入門 - 前端工程開發實務訓練
CSS 入門 - 前端工程開發實務訓練
 
HTML 入門 - 前端工程開發實務訓練
HTML 入門 - 前端工程開發實務訓練HTML 入門 - 前端工程開發實務訓練
HTML 入門 - 前端工程開發實務訓練
 
模块加载策略 - 2012 SDCC, 北京
模块加载策略 - 2012 SDCC, 北京模块加载策略 - 2012 SDCC, 北京
模块加载策略 - 2012 SDCC, 北京
 
YUI is Sexy (for JSDC.tw)
YUI is Sexy (for JSDC.tw)YUI is Sexy (for JSDC.tw)
YUI is Sexy (for JSDC.tw)
 
YUI is Sexy - 使用 YUI 作為開發基礎
YUI is Sexy - 使用 YUI 作為開發基礎YUI is Sexy - 使用 YUI 作為開發基礎
YUI is Sexy - 使用 YUI 作為開發基礎
 
Git - The Social Coding System
Git - The Social Coding SystemGit - The Social Coding System
Git - The Social Coding System
 
miiiCasa is Fun
miiiCasa is FunmiiiCasa is Fun
miiiCasa is Fun
 
分享無名小站 API
分享無名小站 API分享無名小站 API
分享無名小站 API
 
yui3 is Sexy - 使用 YUI 3 的 Sexy Part !
yui3 is Sexy - 使用 YUI 3 的 Sexy Part !yui3 is Sexy - 使用 YUI 3 的 Sexy Part !
yui3 is Sexy - 使用 YUI 3 的 Sexy Part !
 
建立前端開發團隊 - 2011 中華電信訓練所版
建立前端開發團隊 - 2011 中華電信訓練所版建立前端開發團隊 - 2011 中華電信訓練所版
建立前端開發團隊 - 2011 中華電信訓練所版
 
不用不可之 Fiddler Debugging Proxy!
不用不可之 Fiddler Debugging Proxy!不用不可之 Fiddler Debugging Proxy!
不用不可之 Fiddler Debugging Proxy!
 
Open platform
Open platformOpen platform
Open platform
 

Recently uploaded

Sales & Marketing Alignment: How to Synergize for Success
Sales & Marketing Alignment: How to Synergize for SuccessSales & Marketing Alignment: How to Synergize for Success
Sales & Marketing Alignment: How to Synergize for SuccessAggregage
 
HONOR Veterans Event Keynote by Michael Hawkins
HONOR Veterans Event Keynote by Michael HawkinsHONOR Veterans Event Keynote by Michael Hawkins
HONOR Veterans Event Keynote by Michael HawkinsMichael W. Hawkins
 
Mondelez State of Snacking and Future Trends 2023
Mondelez State of Snacking and Future Trends 2023Mondelez State of Snacking and Future Trends 2023
Mondelez State of Snacking and Future Trends 2023Neil Kimberley
 
VIP Call Girls In Saharaganj ( Lucknow ) 🔝 8923113531 🔝 Cash Payment (COD) 👒
VIP Call Girls In Saharaganj ( Lucknow  ) 🔝 8923113531 🔝  Cash Payment (COD) 👒VIP Call Girls In Saharaganj ( Lucknow  ) 🔝 8923113531 🔝  Cash Payment (COD) 👒
VIP Call Girls In Saharaganj ( Lucknow ) 🔝 8923113531 🔝 Cash Payment (COD) 👒anilsa9823
 
Grateful 7 speech thanking everyone that has helped.pdf
Grateful 7 speech thanking everyone that has helped.pdfGrateful 7 speech thanking everyone that has helped.pdf
Grateful 7 speech thanking everyone that has helped.pdfPaul Menig
 
7.pdf This presentation captures many uses and the significance of the number...
7.pdf This presentation captures many uses and the significance of the number...7.pdf This presentation captures many uses and the significance of the number...
7.pdf This presentation captures many uses and the significance of the number...Paul Menig
 
Cash Payment 9602870969 Escort Service in Udaipur Call Girls
Cash Payment 9602870969 Escort Service in Udaipur Call GirlsCash Payment 9602870969 Escort Service in Udaipur Call Girls
Cash Payment 9602870969 Escort Service in Udaipur Call GirlsApsara Of India
 
GD Birla and his contribution in management
GD Birla and his contribution in managementGD Birla and his contribution in management
GD Birla and his contribution in managementchhavia330
 
Tech Startup Growth Hacking 101 - Basics on Growth Marketing
Tech Startup Growth Hacking 101  - Basics on Growth MarketingTech Startup Growth Hacking 101  - Basics on Growth Marketing
Tech Startup Growth Hacking 101 - Basics on Growth MarketingShawn Pang
 
Creating Low-Code Loan Applications using the Trisotech Mortgage Feature Set
Creating Low-Code Loan Applications using the Trisotech Mortgage Feature SetCreating Low-Code Loan Applications using the Trisotech Mortgage Feature Set
Creating Low-Code Loan Applications using the Trisotech Mortgage Feature SetDenis Gagné
 
Russian Faridabad Call Girls(Badarpur) : ☎ 8168257667, @4999
Russian Faridabad Call Girls(Badarpur) : ☎ 8168257667, @4999Russian Faridabad Call Girls(Badarpur) : ☎ 8168257667, @4999
Russian Faridabad Call Girls(Badarpur) : ☎ 8168257667, @4999Tina Ji
 
Call Girls in Gomti Nagar - 7388211116 - With room Service
Call Girls in Gomti Nagar - 7388211116  - With room ServiceCall Girls in Gomti Nagar - 7388211116  - With room Service
Call Girls in Gomti Nagar - 7388211116 - With room Servicediscovermytutordmt
 
Boost the utilization of your HCL environment by reevaluating use cases and f...
Boost the utilization of your HCL environment by reevaluating use cases and f...Boost the utilization of your HCL environment by reevaluating use cases and f...
Boost the utilization of your HCL environment by reevaluating use cases and f...Roland Driesen
 
Monte Carlo simulation : Simulation using MCSM
Monte Carlo simulation : Simulation using MCSMMonte Carlo simulation : Simulation using MCSM
Monte Carlo simulation : Simulation using MCSMRavindra Nath Shukla
 
BEST ✨ Call Girls In Indirapuram Ghaziabad ✔️ 9871031762 ✔️ Escorts Service...
BEST ✨ Call Girls In  Indirapuram Ghaziabad  ✔️ 9871031762 ✔️ Escorts Service...BEST ✨ Call Girls In  Indirapuram Ghaziabad  ✔️ 9871031762 ✔️ Escorts Service...
BEST ✨ Call Girls In Indirapuram Ghaziabad ✔️ 9871031762 ✔️ Escorts Service...noida100girls
 
The Coffee Bean & Tea Leaf(CBTL), Business strategy case study
The Coffee Bean & Tea Leaf(CBTL), Business strategy case studyThe Coffee Bean & Tea Leaf(CBTL), Business strategy case study
The Coffee Bean & Tea Leaf(CBTL), Business strategy case studyEthan lee
 
Event mailer assignment progress report .pdf
Event mailer assignment progress report .pdfEvent mailer assignment progress report .pdf
Event mailer assignment progress report .pdftbatkhuu1
 
Yaroslav Rozhankivskyy: Три складові і три передумови максимальної продуктивн...
Yaroslav Rozhankivskyy: Три складові і три передумови максимальної продуктивн...Yaroslav Rozhankivskyy: Три складові і три передумови максимальної продуктивн...
Yaroslav Rozhankivskyy: Три складові і три передумови максимальної продуктивн...Lviv Startup Club
 

Recently uploaded (20)

VVVIP Call Girls In Greater Kailash ➡️ Delhi ➡️ 9999965857 🚀 No Advance 24HRS...
VVVIP Call Girls In Greater Kailash ➡️ Delhi ➡️ 9999965857 🚀 No Advance 24HRS...VVVIP Call Girls In Greater Kailash ➡️ Delhi ➡️ 9999965857 🚀 No Advance 24HRS...
VVVIP Call Girls In Greater Kailash ➡️ Delhi ➡️ 9999965857 🚀 No Advance 24HRS...
 
Sales & Marketing Alignment: How to Synergize for Success
Sales & Marketing Alignment: How to Synergize for SuccessSales & Marketing Alignment: How to Synergize for Success
Sales & Marketing Alignment: How to Synergize for Success
 
HONOR Veterans Event Keynote by Michael Hawkins
HONOR Veterans Event Keynote by Michael HawkinsHONOR Veterans Event Keynote by Michael Hawkins
HONOR Veterans Event Keynote by Michael Hawkins
 
Mondelez State of Snacking and Future Trends 2023
Mondelez State of Snacking and Future Trends 2023Mondelez State of Snacking and Future Trends 2023
Mondelez State of Snacking and Future Trends 2023
 
VIP Call Girls In Saharaganj ( Lucknow ) 🔝 8923113531 🔝 Cash Payment (COD) 👒
VIP Call Girls In Saharaganj ( Lucknow  ) 🔝 8923113531 🔝  Cash Payment (COD) 👒VIP Call Girls In Saharaganj ( Lucknow  ) 🔝 8923113531 🔝  Cash Payment (COD) 👒
VIP Call Girls In Saharaganj ( Lucknow ) 🔝 8923113531 🔝 Cash Payment (COD) 👒
 
Grateful 7 speech thanking everyone that has helped.pdf
Grateful 7 speech thanking everyone that has helped.pdfGrateful 7 speech thanking everyone that has helped.pdf
Grateful 7 speech thanking everyone that has helped.pdf
 
7.pdf This presentation captures many uses and the significance of the number...
7.pdf This presentation captures many uses and the significance of the number...7.pdf This presentation captures many uses and the significance of the number...
7.pdf This presentation captures many uses and the significance of the number...
 
Cash Payment 9602870969 Escort Service in Udaipur Call Girls
Cash Payment 9602870969 Escort Service in Udaipur Call GirlsCash Payment 9602870969 Escort Service in Udaipur Call Girls
Cash Payment 9602870969 Escort Service in Udaipur Call Girls
 
GD Birla and his contribution in management
GD Birla and his contribution in managementGD Birla and his contribution in management
GD Birla and his contribution in management
 
Tech Startup Growth Hacking 101 - Basics on Growth Marketing
Tech Startup Growth Hacking 101  - Basics on Growth MarketingTech Startup Growth Hacking 101  - Basics on Growth Marketing
Tech Startup Growth Hacking 101 - Basics on Growth Marketing
 
Creating Low-Code Loan Applications using the Trisotech Mortgage Feature Set
Creating Low-Code Loan Applications using the Trisotech Mortgage Feature SetCreating Low-Code Loan Applications using the Trisotech Mortgage Feature Set
Creating Low-Code Loan Applications using the Trisotech Mortgage Feature Set
 
Russian Faridabad Call Girls(Badarpur) : ☎ 8168257667, @4999
Russian Faridabad Call Girls(Badarpur) : ☎ 8168257667, @4999Russian Faridabad Call Girls(Badarpur) : ☎ 8168257667, @4999
Russian Faridabad Call Girls(Badarpur) : ☎ 8168257667, @4999
 
Call Girls in Gomti Nagar - 7388211116 - With room Service
Call Girls in Gomti Nagar - 7388211116  - With room ServiceCall Girls in Gomti Nagar - 7388211116  - With room Service
Call Girls in Gomti Nagar - 7388211116 - With room Service
 
Forklift Operations: Safety through Cartoons
Forklift Operations: Safety through CartoonsForklift Operations: Safety through Cartoons
Forklift Operations: Safety through Cartoons
 
Boost the utilization of your HCL environment by reevaluating use cases and f...
Boost the utilization of your HCL environment by reevaluating use cases and f...Boost the utilization of your HCL environment by reevaluating use cases and f...
Boost the utilization of your HCL environment by reevaluating use cases and f...
 
Monte Carlo simulation : Simulation using MCSM
Monte Carlo simulation : Simulation using MCSMMonte Carlo simulation : Simulation using MCSM
Monte Carlo simulation : Simulation using MCSM
 
BEST ✨ Call Girls In Indirapuram Ghaziabad ✔️ 9871031762 ✔️ Escorts Service...
BEST ✨ Call Girls In  Indirapuram Ghaziabad  ✔️ 9871031762 ✔️ Escorts Service...BEST ✨ Call Girls In  Indirapuram Ghaziabad  ✔️ 9871031762 ✔️ Escorts Service...
BEST ✨ Call Girls In Indirapuram Ghaziabad ✔️ 9871031762 ✔️ Escorts Service...
 
The Coffee Bean & Tea Leaf(CBTL), Business strategy case study
The Coffee Bean & Tea Leaf(CBTL), Business strategy case studyThe Coffee Bean & Tea Leaf(CBTL), Business strategy case study
The Coffee Bean & Tea Leaf(CBTL), Business strategy case study
 
Event mailer assignment progress report .pdf
Event mailer assignment progress report .pdfEvent mailer assignment progress report .pdf
Event mailer assignment progress report .pdf
 
Yaroslav Rozhankivskyy: Три складові і три передумови максимальної продуктивн...
Yaroslav Rozhankivskyy: Три складові і три передумови максимальної продуктивн...Yaroslav Rozhankivskyy: Три складові і три передумови максимальної продуктивн...
Yaroslav Rozhankivskyy: Три складові і три передумови максимальної продуктивн...
 

BluePrint - Mobile Widget Platform

  • 1. Yahoo! Blueprint Platform CL Asia Team August 2008
  • 2.
  • 3. Building Mobile Applications Multiple brands – Multiple phone models Multiple Operating Systems Different screen resolutions Different memory capabilities
  • 4. Blueprint coverage Coverage Symbian Java ME XHTML Blueprint Technology iPhone Android
  • 5.
  • 6.
  • 7. Blueprint Mobile Platform Open Platform Easy to Mobilize Maximum Reach Free!
  • 8. Write once, run it across multiple devices, platforms and operating systems Yahoo! Go 3.0 Downloadable Java app Yahoo! Mobile Homepage http:// beta.m.yahoo.com Covers 270+ phone models 2+ Million active users / per month Customized rendering for iPhone, HTML and xHTML browsers 28+ Million active users / per month 2 ways for user to access your widget
  • 9.
  • 10. Building Mobile Widgets What Do I Need? Any web-Server Use any scripting language Use any existing publishing tools Return Blueprint!
  • 12.
  • 13.
  • 14. Building Mobile Widget Yahoo! Server Widget Submission Application Package Widget Request Widget Content HTTP Request Blueprint (XML) Your Web Server 2 3 2. Create static/dynamic pages to return Blueprint 3. Create your application package and submit 2 Develop your widget
  • 15. Building Mobile Widget Yahoo! Server Your Server Mobile Phone User opens Widget Request entry point HTTP request to Widget publisher URI specified in config.xml Includes language and location headers Blueprint page returned Includes Content-Type header; may include cache-control headers; may include cookies for Widget publisher Widget content returned (Cookies stored on Yahoo! server) User requests new data HTTP request … Request new content Data flow
  • 16. Building Mobile Widget Interfacing with Yahoo! Servers Content Types: Content-Type: application/x-ywidget+xml Content-Type: application/x-ysnippet+xml Use only the UTF-8 character set. Using Cookies: Your server can set/retrieve cookies exactly as if you are serving HTML instead of Blueprint markup. The cookies are stored on Yahoo! servers Cache Control: Wherever possible, Blueprint pages are cached on the user’s device. To control caching, use the following standard HTTP headers when serving pages: Cache-Control, ETag, and If-None-Match. Only these headers affect caching
  • 17. Building Mobile Widget Interfacing with Yahoo! Servers Internationalization and Localization: When Yahoo! Mobile application server sends a page request, the request may contain several HTTP headers, including: Accept-Language RFC 4646/4647 language code (Example: Accept-Language: en-US) Geo-Country ISO 3166 country or UN M.49 region code (Example: Geo-Country: CA) You can use the information in the headers to decide what content to return.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22. Widgets development process Summary 1 2 3 4 5 6 Download the Blueprint SDK Develop your widget Package your widget Upload your mobile widget Test your mobile widget Publish your mobile widget
  • 24. Overview of the Blueprint Language Containers Controls Inline elements Containers are Grouping elements. They contain containers as well as controls and inline elements Controls presents content to the user and allow data input. They contain other controls as well as inline elements Inline elements contain text, references, or simple presentation constructs. Form-support components Events Actions UI Elements Non UI Elements includes
  • 25. Overview of the Blueprint Language Hello World! Widget Example Note: Please check Blueprint documentation to know about all the other constructs UI Elements: Containers Contains inline data (text, images, spans) block Contains blocks, controls and nested modules module A wrapper for the display elements within a Widget page. Contains modules content A single screen in a widget. Includes a content element, which contains at least one module page <page> <content> <module> <header layout=&quot;simple&quot;> <layout-items> <block>Greeting</block> </layout-items> </header> <block>Hello World!</block> </module> </content> </page>
  • 26. Overview of the Blueprint Language <Page> <content> (Exactly one) <models> (Zero or one) <page-header> (Zero or one) <controls> (Zero or more) <controls> (Zero or more) <Data> (Text) <module> (One or more) <block> (Zero or more) <Inline elements> (Zero or more) <module> (Zero or more) Widget Structure
  • 27. Overview of the Blueprint Language <page> <page-header> <masthead layout=&quot;simple&quot;> <layout-items> <block>My Widget</block> </layout-items> </masthead> </page-header> <content> <module> <header layout=&quot;simple&quot;> <layout-items> <block>Greeting</block> </layout-items> </header> <block>Hello World!</block> </module> </content> </page> Page Header Blueprint (XML) UI Elements: Controls A title (with an optional icon) for a page page-header
  • 28. Overview of the Blueprint Language <page> <page-header> <masthead layout=&quot;simple&quot;> <layout-items> <block>My Widget</block> </layout-items> </masthead> </page-header> <content> <module> <header layout=&quot;simple&quot;> <layout-items> <block>Greeting</block> </layout-items> </header> <block>Hello World!</block> </module> </content> </page> Header for module Blueprint (XML) UI Elements: Controls A title (with an optional icon) for a module header
  • 29. Overview of the Blueprint Language <page> … <content> … <module> <placard layout=&quot;card&quot;> <layout-items> <block class=&quot;title&quot;>Capricorn</block> <block class=&quot;description&quot;>Dec 22 - Jan 19</block> <image size=&quot;medium“ resource=&quot;http://../c.jpg&quot;/> </layout-items> <load event=&quot;activate&quot; resource=&quot;h?t=d&amp;ss=c&quot;/> </placard> </module> … </content> </page> Placard with image, text and sub-text Blueprint (XML) UI Elements: Controls Provides flexible predefined layouts using blocks and images placard
  • 30. Overview of the Blueprint Language <page> <content> <module> <header layout=&quot;simple&quot;> <layout-items> <block>Greeting</block> </layout-items> </header> <block>Hello World!</block> <trigger appearance=&quot;button&quot;> <label>Click Me</label> <load event=&quot;activate&quot; resource=&quot;http://../c.html&quot;/> </trigger> </module> </content> </page> Use Trigger or Submit to create a button Blueprint (XML) UI Elements: Controls A button or clickable label trigger
  • 31. Overview of the Blueprint Language < <page> <content> <options> <option> <label>Delete</label> <load-page event=&quot;activate&quot; page=&quot;delete.bp&quot;/> </option> <option> <label>Reply</label> <load-page event=&quot;activate&quot; page=&quot;reply.bp&quot;/> </option> <option> <label>More</label> <load-page event=&quot;activate&quot; page=&quot;more.bp&quot;/> </option> </options> <module> … </module> </content> </page> Blueprint (XML) UI Elements: Controls A choosable item that usually appears on a main menu Option
  • 32. Overview of the Blueprint Language <page> <content> <module> … <navigation-bar> <back> <label>Back to Inbox</label> <load event=&quot;activate&quot; resource=&quot;back.php&quot;/> </back> <prev> <label>Prev</label> <load event=&quot;activate&quot; resource=&quot;prev.php&quot;/> </prev> <next> <label>Next</label> <load event=&quot;activate&quot; resource=&quot;next.php&quot;/> </next> </navigation-bar> </module> </content> </page> Blueprint (XML) UI Elements: Controls A navigation bar with next/back buttons navigation-bar
  • 33. Overview of the Blueprint Language <page> <models> <model> <instance> <data xmlns=&quot;&quot;> <name/> </data> </instance> <submission resource=&quot;q.php&quot; method=&quot;urlencoded-post&quot;/> </model> </models> <content> ... <module> … <input ref=&quot;name&quot;> <label>Name:</label> </input> <submit appearance=&quot;button&quot;> <label>Get Quotes</label> </submit> </module> </content> </page> Input Forms, Events and Actions A single line edit box for data entry Input
  • 34. Step by Step Tutorial Building a “Hello World” widget
  • 35. Building a “Hello World” widget Yahoo! Server Widget Submission Application Package Widget Request Widget Content HTTP Request Blueprint (XML) Your Web Server 2 2. Write static/dynamic pages to return Blueprint 2 Develop your widget
  • 36. Building a “Hello World” widget Your Web Server 2 <?php header( &quot;Content-Type: application/x-ywidget+xml&quot; ); header( &quot;Cache-Control: no-cache&quot; ); require_once( &quot;lib/blueprint.php&quot; ); blueprintSetErrorHandler(); $writer = new XMLWriter(); $writer->openMemory(); $writer->setIndent( true ); // Create Page and Section nodes $page = new Blueprint_Page(); $module = new Blueprint_Module(); $page->addContent( $module ); // Add main content block $module->addContent( new Blueprint_Block( &quot;Hello World!&quot; ) ); $module->setHeader ( &quot;Greeting&quot; ); // Write everything to memory buffer $page->Emit( $writer ); // Return buffer & flush print( $writer->outputMemory() ); ?> Server (Using PHP 5.2 and above)
  • 37. Building a “Hello World” widget Your Web Server 2 Blueprint (XML) Blueprint (XML) Server (Using PHP 5.2 and above) <page> <content> <module> <header layout=&quot;simple&quot;> <layout-items> <block>Greeting</block> </layout-items> </header> <block>Hello World!</block> </module> </content> </page>
  • 38. Building a “Hello World” widget Yahoo! Server Widget Submission Application Package Widget Request Widget Content HTTP Request Blueprint (XML) Your Web Server 3 3. Create your application package and submit 3 Package your application
  • 39. Building a “Hello World” widget <?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?> <config xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xmlns=&quot;http://mobile.yahoo.com/widgets/schema/1.0/config/&quot; xsi:schemaLocation=&quot;...&quot;> <title>Hello World!</title> <version>1.0</version> <identifier>hello-world-1</identifier> <description>My Hello World! Widget</description> <icon>ybang</icon> <author organization=&quot;Yahoo! Inc&quot; href=&quot;http://www.yahoo.com&quot; email=&quot;pkirtane@yahoo-inc.com&quot;> Prashant Kirtane </author> <!-- change this widget base to your server url --> <widget base=&quot;http://yourserver.com/HelloWorld/&quot;> <preview> <icon>ybang</icon> <label>Hello World!</label> </preview> <shortcuts> <item default=&quot;true&quot;> <label>Y! Mobile</label> <href>test.php</href> </item> </shortcuts> </widget> </config> Widget Submission 3 Yahoo! Server Application Package Application Package (config.xml)
  • 40. Building a “Hello World” widget <?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?> <gallery xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xmlns=&quot;http://mobile.yahoo.com/widgets/schema/1.0/gallery/&quot; xsi:schemaLocation=&quot;...&quot;> <description lang=&quot;en&quot;> Hello World! Widget </description> <tags> <!-- Use tags which identify your widget to other users --> <tag>Yahoo!</tag> <tag>Mobile</tag> <tag>widget</tag> <tag>development</tag> </tags> <languages> <!-- Use languages your widget supports --> <lang>en-US</lang> <lang>en-UK</lang> </languages> </gallery> Widget Submission 3 Yahoo! Server Application Package Application Package (gallery.xml)
  • 41. Building a “Hello World” widget Widget Submission 3 Yahoo! Server Application Package Application Package (HelloWorld/resources/images)
  • 42.
  • 43. Building a “Hello World” widget Yahoo! Mobile Front-page http://beta.m.yahoo.com Hello World! Widget My Widget page http://beta.m.yahoo.com 5 Test your mobile “HelloWorld” widget
  • 44.