Mobile Web Application Best Practices אייל סלע מנהל פרויקטים ,איגוד האינטרנט הישראלי ומשרד ה W3C-הישראלי www.w3.org/TR/mwabp 1 j.mp/w3cdoc www.w3.org/TR/mwabp 2 ...תוכנית W3C איגוד האינטרנט הישראלי ו- מבוא mobile web applications best practices-אודות ה The Best practices www.w3.org/TR/mwabp 3 איגוד האינטרנט הישראלי • שלוחת האיגוד הבינלאומי: • עמותה ללא מטרת רווח פועל לקידום האינטרנט והטמעתו בישראל כתשתית טכנולוגית ,מחקרית ,חינוכית ,חברתית ועסקית. www.w3.org/TR/mwabp/ www.w3c.org.il 4 W3C • • • • ארגון בינלאומי כ 350-ארגונים פורום ניטראלי ליצירת תקני רשת באינטרנט. משימה: להוביל את הרשת למיצוי הפוטנציאל על ידי פיתוח פרוטוקולים וקווים מנחים שיאפשרו את צמיחתה לטווח ארוך. www.w3.org/TR/mwabp 5 W3Cהשנה סידרת מפגשים למפתחים קבוצות עניין פיתוח אפליקציה סדנאות תגובה למומחים הרצאות אורח (שלנו ,שלכם) תמיכה בפעילות קבוצות/קהילות שילוב מומחים בקבוצות עבודה עוד... ( www.w3.org/TR/mwabp 6 ) Mobile Web -אודות ה Application Best Practices www.w3.org/TR/mwabp 7 מסמך קווים מנחים של ה.W3C- מגדיר 35שיטות לשיפור חווית המשתמש באפליקציות ווב למכשירים ניידים www.w3.org/TR/mwabp 8 Candidate recomendation המסמך נמצא בשלב You are here j.mp/w3crec www.w3.org/TR/mwabp 9 הגישו דיווח יישום... למה לכם? כי חייבים להציג יישום בכדי שזה יהפוך לתקן כי האפליקציה שלכם תופיע בדוח היישומים -כי אני אכתוב על זה באתר W3Cהישראלי www.w3.org/TR/mwabp 10 j.mp/w3cmo1 public-bpwg-comments@w3.org j.mp/w3cmobp www.w3.org/TR/mwabp 11 דיווח יישום... מי יכול להגיש? כל מי שפיתח אפליקציה -וישים חלק מהשיטות במסמך (גם בדיעבד) www.w3.org/TR/mwabp 12 ?מה מיישמים www.w3.org/TR/mwabp 13 על מה אנחנו מדברים? www.w3.org/TR/mwabp 14 Web Application Web page(s) that provide an "application-like" experience within a Web browser. www.w3.org/TR/mwabp 15 validator.w3.org/mobile/ bit.ly/w3cmbp )BP1( הבדל מאתר רגיל include locally executable elements of interactivity and persistent state. :למשל nextbus.com/webkit/ app.clichespotting.com m.jobscentral.com.sg www.w3.org/TR/mwabp 16 nextbus.com/webkit/ + User Agent Switcher j.mp/w3cmo1 www.w3.org/TR/mwabp 17 touchsolitaire.mobi/app j.mp/w3cmo15 www.w3.org/TR/mwabp app.clichespotting.com app.clichespotting.com www.w3.org/TR/mwabp 19 m.jobscentral.com.sg m.jobscentral.com.sg www.w3.org/TR/mwabp 20 Sencha touch (!!) http://www.sencha.com/ j.mp/w3cmo6 www.w3.org/TR/mwabp מגבלות והבדלים – מכשירים ניידים לעומת שולחניים • תצוגה • הזנת תוכן • רוחב פס ועלות • מטרות המשתמש • מגבלות המכשיר bit.ly/w3cmbp www.w3.org/TR/mwabp/ www.w3c.org.il 22 Best practices www.w3.org/TR/mwabp/ 23 www.w3c.org.il .1 .2 .3 .4 .5 .6 .7 נתוני האפליקציה ביטחון מידע ופרטיות ()1 יידוע המשתמש ושליטתו באפליקציה ()4 שימוש מוגבל במשאבים ()11 חווית משתמש ()10 התאמה ל)5( Delivery Context- שיקולים נוספים ()1 ()3 (סה"כ )35 www.w3.org/TR/mwabp 24 .1נתוני האפליקציה .2 .3 .4 .5 .6 .7 ()3 ביטחון מידע ופרטיות יידוע המשתמש ושליטתו באפליקציה ()4 שימוש מוגבל במשאבים ()11 חווית משתמש ()10 התאמה ל)5( Delivery Context- שיקולים נוספים ()1 ()1 www.w3.org/TR/mwabp 25 השתמשו בטכנולוגיות ושיטות מתאימות לאחסון נתוני האפליקציה www.w3.org/TR/mwabp 26 .1המעיטו את השימוש בעוגיות מה? נשלחות לשרת בכל בקשה יתכן ולא יהיה פעילות במכשיר איך? בנו אפליקציה פעילה גם ללא עוגיות (למשל עם )URI decoration Image by: D Sharon Pruitt 1. Use Cookies Sparingly www.w3.org/TR/mwabp 27 השתמשו בטכנולוגיות המתאימות לאחסון מידע בצד הלקוח.2 ?מה עדיף להשתמש במנגנונים בצד לקוח לאחסון . בעיקר בכמויות גדולות,מידע )Responsiveness , start-up time (מועיל ב ?איך BONDI • - HTML5 • Opera Widgets • Offline - j.mp/w3coff by Remy Sharp - remysharp.com/demo/rubiks/ 2. Use Appropriate Client-Side Storage Technologies for Local Data j.mp/w3cmo7 www.w3.org/TR/mwabp 28 .3שכפלו מידע לשרת במידת הצורך מה? תצוגה אחידה במכשירים שונים מגבה למקרה של אובן המכשיר (לא צריך לשכפל למשל העדפות תצוגה של מכשיר ספציפי) איך? טכנולוגיות לאחסון מידע צד לקוח מספקת גם בדיקת קישוריות. דוגמא... 3. Replicate Local Data www.w3.org/TR/mwabp 29 Local storage + offline - demo www.html5rocks.com/tutorials/offline/todo/ www.w3.org/TR/mwabp j.mp/mozoff 30 .1נתוני האפליקציה ()3 .2ביטחון מידע ופרטיות .3 .4 .5 .6 .7 ()1 יידוע המשתמש ושליטתו באפליקציה שימוש מוגבל במשאבים ()11 חווית משתמש ()10 התאמה ל)5( Delivery Context- שיקולים נוספים ()1 ()4 www.w3.org/TR/mwabp/ www.w3c.org.il 31 ביטחון מידע ופרטיות – השתמשו במידע אמין והגנו על פרטיות המשתמש www.w3.org/TR/mwabp 32 4. Do not Execute Unescaped or Untrusted JSON data direct execution of a datafeed that contains unescaped usergenerated data = security risk Use JSON parser Image by: D Sharon Pruitt 4. Do not Execute Unescaped or Untrusted JSON data www.w3.org/TR/mwabp 33 .1נתוני האפליקציה ()3 .2ביטחון מידע ופרטיות ()1 .3יידוע המשתמש ושליטתו באפליקציה .4 .5 .6 .7 ()4 שימוש מוגבל במשאבים חווית משתמש ()10 התאמה ל)5( Delivery Context- שיקולים נוספים ()1 ()11 www.w3.org/TR/mwabp/ www.w3c.org.il 34 התייחסו יפה למידע רגיש... מדיה ,פרטי קשר ו ,calendar-פירוט שיחות ,מידע על המכשיר ,מיקום (!) ,חיבור לרשת (הקפידו על ההמלצות הבאות אם הדפדפן אינו מספק אותן) www.w3.org/TR/mwabp 35 .5הודיעו למשתמש על גישה אוטומטית לרשת* מה? שימוש ברשת מרוקן את הסוללה עולה כסף... איך? אייקון המודיע על פעילות ברקע הודיעו על שימוש רב ברשת (בחיבור ראשון ,בהרשמה או בדפי העזרה) ספקו מידע על אופי החיבור (כמה זמן ,תדירות,סה"כ שימוש) . 5. Inform the User About Automatic Network Access www.w3.org/TR/mwabp 36 .6ספק אמצעים לשליטה בחיבור אוטומטי לרשת * מה? אפשר למשתמש למנוע חיבור אוטומטי לרשת (כאשר זה מבוטל – הציגו הודעת חיבור מעת לעת). אפשרי – אפשר למשתמש לשלוט במועדי החיבור או בפעילויות אשר יכולות להתחבר. Image by: Jeff Sonstein 6. Provide Sufficient Means to Control Automatic Network Access www.w3.org/TR/mwabp 37 הודיעו למשתמש על שימוש במידע על.7 המכשיר או פרטים אישיים ?מה בעת כניסה ראשונה לשירות או בגישה ראשונה .למידע ?איך יש בקשת רשות מובנתAPI-לרוב ל .)confirmation dialog ; recover gracefully( 7. Ensure the User is Informed About Use of Personal and Device Information MapQuest.com www.w3.org/TR/mwabp 38 .8אפשרו Sign-inאוטומטי מה? כי יותר קשה להזין תוכן.... איך? בעוגיות ,או local storage (לא לשכוח לשים לינק ל)log out- 8. Enable Automatic Sign-in www.w3.org/TR/mwabp 40 האפליקציה ()3 .1נתוני .2ביטחון מידע ופרטיות ()1 .3יידוע המשתמש ושליטתו באפליקציה ()4 .4שימוש מוגבל במשאבים ()11 .5חווית משתמש .6התאמה ל)5( Delivery Context- .7שיקולים נוספים ()1 ()10 www.w3.org/TR/mwabp/ www.w3c.org.il 41 אל תכבידו על משאבי המכשיר מוגבלים בניידים - זיכרון עיבוד רוחב פס www.w3.org/TR/mwabp 42 9. Use Transfer Compression מה? השתמשו בדחיסה של התוכן. אבל זכרו שיש עלות של זמן וחיי סוללה. איך? ... Gzip לרוב לא צריך לדוחס :תמונות ,אדיו ,וידאו ,קבצים קנטים מ1k- 9. Use Transfer Compression www.w3.org/TR/mwabp 43 מזערו את גודל האפליקציה והנתונים.10 ?למה תרד יותר מהר תפעל יותר טוב ?איך JavaScript- וHTML ,CSS הקטינו (removal of white space and comments; shorter tokens (variables, method names, selector names) 10. Minimize Application and Data Size compressorrater.thruhere.net www.w3.org/TR/mwabp 44 .11המנעו מRedirects- מה? לרוב נעשה שימוש ב HTTP 3xxאו HTML meta refreshלהעברת מידע )(e.g. account authentication איך? פשוט נסו להמנע מהן. אם צריך יותר משתיים ,אפשר להציג דף מעבר )בכדי שהמשתמש ידע ש'זה טעון'( 11. Avoid Redirects www.w3.org/TR/mwabp 45 12. Optimize Network Requests מה? עדיף לבצע בקשות גדולות לשרת אך מועטות יותר (מאשר הרבה בקשות קטנות) איך? קיבוץ בקשות תעדוף בקשות פעילות בהתאם לרמת הקישוריות 12. Optimize Network Requests www.w3.org/TR/mwabp 46 .13צמצמו שימוש במקורות חיצוניים למה? כל קובץ סקריפט ,CSS ,תמונה = = HTTP requestטיול לשרת איך? CSSו JavaScript-כל אחד בקובץ אחד בלבד OR או שהם ישולבו לפני שהעמוד מוגש ללקוח 13. Minimize External Resources www.w3.org/TR/mwabp 47 (Sprites) אחדו תמונות.14 ?איך similar sizes and color palettes. That do not change often. use CSS positioning and clipping. דוגמא Image by: Kriplozoik www.yahoo.com 14. Aggregate Static Images into a Single Composite Resource (Sprites) www.w3.org/TR/mwabp 48 CSS- שלבו תמונות רקע ב.15 ?מה CSS- אפשר לכלול אותן ב,במקום להוריד תמונות buzz data:image/png;base64, iVBORw0KGgoAAAANSUhEUgA AABAAAAAQAQMAAAAlPW0iAA AABlBMVEUAAAD/ //+l2Z/dAAAAM0lEQVR4nGP 4/5/h/1+G/58ZDrAz3D/McH 8yw83NDDeNGe4U g9C9zwz3gVLMDA/A6P9/AFG GFyjOXZtQAAAAAElFTkSuQm CC data:image/png;base64,iVBORw0KGgoAAAANSUh EUgAAAAgAAAAhCAYAAADkrOp1AAAAGXRFWH RTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllP AAAAYFJREFUeNqEU7FOwzAQvXMuJSC1oqlKuo aZkakrGyti5i+Q+AZ+goERiR9hYEJiZKVIFaqgtJV9 nO04SdO0TfQk5+75vedLgswM45vnDADuBOcCuy 4vkmaOCE/ZqJ+nabcbxzFh0Zx8fQPFpG6z0eD0JE uPVUSglAJATyGaAxnm8WDY70WdBKIawd4RxUB a81EnSRTFHUdAu7tQQBUB+QW5B7BwvSKFEB2 BpSCHAXsiZnQVV5dnKlauxAxlsyh7ggQFNKaSLg mmRvAeDUJQMAxKBAw0CRwIxmHdwCv7U4iCV UHYamFcyKZCGVLLbmhRMEHBD2jzFFCGlDruzY BtGbiaA2JbhkDQvonNSZraoGCnhbYpNxXsvkrBBd 2mwMWgkHdYQAshhNQiz7hpYfYrQO1145YM8mf 9afGIkBVg82XJnzDsH76vFr+z8FWtQTzU1UX+yKu fj+V8NtVGh0/Dgd38mLsvb5PL ?איך data URI :דוגמא 15. Include Background Images Inline in CSS Style Sheet www.w3.org/TR/mwabp 49 16. Fingerprinting Resource for chach ?מה לקבצים שמשתנים מדי פעםcache אפשר לעשות ?איך לתאריך רחוק מאוד בעתידchase- הגדירו את ה שישתנה כשצריך לעדכןhash של הקובץURL- הוסיפו בסיומת ה.אותו <img src="http://www.example.com/userimages/joeblogs-67f90da089da"> 16. Cache Resources By Fingerprinting Resource References www.w3.org/TR/mwabp 50 17. Cache AJAX Data ?מה cache אפשר לעשות,כפי שעושים עם תוכן רגיל .AJAX-למידע שמגיע ב ?איך כרגיל Expires \ Cache-Control header- וfingerprinting 17. Cache AJAX Data www.w3.org/TR/mwabp/ www.w3c.org.il 51 .18שלחו עוגיות רק כשצריך מה? תוכן סטטי אינו צריך עוגיות – אז עדיף להימנע איך? .1 .2 דומיין ,תת דומיין או pathנפרד לתוכן סטטי הגדירו pathלעוגיות 18. Do not Send Cookie Information Unnecessarily www.w3.org/TR/mwabp 52 Keep DOM Size Reasonable .19 ?איך pagination למשל בעזרת V win X Fail 19. Keep DOM Size Reasonable www.w3.org/TR/mwabp 53 .1 .2 .3 .4 נתוני האפליקציה ביטחון מידע ופרטיות ()1 יידוע המשתמש ושליטתו באפליקציה ()4 שימוש מוגבל במשאבים ()11 ()3 .5חווית משתמש ()10 .6התאמה לDelivery Context- .7שיקולים נוספים ()1 ()5 www.w3.org/TR/mwabp/ www.w3c.org.il 54 בגלל מורכבות רבה יותר בשימוש במכשירים ניידים – חשוב לשפר את חווית המשמש Latency interaction method data consistency www.w3.org/TR/mwabp 55 להתחיל צ'יק צ'ק.20 ?איך Use Offline Technology (e.g. AppCache) – Resources (HTML, JavaScript, CSS) stored locally. Use Local Storage: store a snapshot of last state display it immediately on start-up Minimize Number of Local Storage Queries before the first view can be displayed. http://www.flickr.com/photos/66475767@N00/4333416050/ ...דוגמא 20. Optimize For Application Start-up Time www.w3.org/TR/mwabp 56 High responsiveness with Local storage - example מבוסס על IBM: Unlock local storage for mobile Web applications with HTML 5: j.mp/w3cmo3 j.mp/w3cmo2 www.w3.org/TR/mwabp 21. Minimize Perceived Latency ?איך Incremental Rendering JavaScript at the bottom + useful information that might be available is viewable while loading. Keep the User Informed of Activity (progress bars) Avoid Page Reloads To reflect changes in state or show different views 21. Minimize Perceived Latency Preload Probable Next Views ...דוגמא www.w3.org/TR/mwabp 58 kiva - דוגמא j.mp/w3cmo10 www.w3.org/TR/mwabp 59 22. Design for Multiple Interaction Methods ?מה שלושה סוגי אינטראקציה עיקריים . אם אי אפשר – להתאים לכולם.עדיף להתאים לשיטת מכשיר היעד ?איך Focus Based: (focus "jumps" from link to link) . Pointer Based: (Key-based navigation + pointer ) Selectable elements that are associated with each other need to be close Selectable elements need to be large enough (pointer often moves in steps) Selectable elements should have rollovers Image by: Dennis Bournique Touch Based: (finger ) Selectable elements may be widely spaced since the user can select them directly Selectable elements must be large enough to be easily selected (list items - at least 30px) 22. Design for Multiple Interaction Methods www.w3.org/TR/mwabp 60 .23הימנעו משינוי הפוקוס בדפים דינמיים איך? )( – .focusרק כשחייבים וכזה לא פוגע בשליטה 23. Preserve Focus on Dynamic Page Updates www.w3.org/TR/mwabp 61 fragment - השתמשו ב.24 לתצוגהidentifiers ?מה בכדי לאפשר שמירתfragment identifiers -השתמשו ב back- ולא לפגוע ב,הקישור לתצוגה ...דוגמא http://myapp.example.org/myapp#view 24. Use Fragment IDs to Drive Application View www.w3.org/TR/mwabp 62 W3C Cheat Sheet j.mp/w3cmo8 www.w3.org/TR/mwabp 63 "Click-to-Call"- השתמש במספרי טלפון ב.25 איך <a href="tel:[PHONE-NUMBER]">[PHONE-NUMBER]</a> entered using the full international prefix my.springpadit.com 25. Make Telephone Numbers "Click-to-Call" www.w3.org/TR/mwabp 64 מה? • • 26. Ensure Paragraph Text Flows מנע גלילה אנכית ואפשר קריאה בשינוי אוריאנטציה איך? בקונטיינרים: כן :באחוזים /יחידות מידה יחסיות לא יחידות מוחלטות או פיקסלים Image by: curiouslee דוגמא... 26. Ensure Paragraph Text Flows www.w3.org/TR/mwabp 65 דוגמא – טקסט צף ומתאים לגודל המסמך www.w3.org/TR/mwabp W3c.org 27. Ensure Consistency Of State Between Devices ?מה הקפידו על עקיבות באפליקציה בין מכשירים שונים • Credentials • preferences • Data ?איך שימורו על השרת מידע שאינו רלוונטי רק למכשיר הספציפי http://www.flickr.com/photos/osde-info/4336196538/sizes/o/ 27. Ensure Consistency Of State Between Devices www.w3.org/TR/mwabp 67 .1 .2 .3 .4 .5 האפליקציה ()3 נתוני ביטחון מידע ופרטיות ()1 יידוע המשתמש ושליטתו באפליקציה ()4 שימוש מוגבל במשאבים ()11 חווית משתמש ()10 .6התאמה לDelivery Context- .7שיקולים נוספים ()5 ()1 www.w3.org/TR/mwabp/ www.w3c.org.il 68 התאימו ל Delivery Context -שונים צרו אפליקציה בעלת יכולת זיהוי ההקשר (כגון יכולות המכשיר) והסתגלות להן( .התאמת תוכן ,ניווט ,מבנה עמוד)... www.w3.org/TR/mwabp 69 push- מומלץ – שימוש ב.28 ?מה ...אם מכשיר היעד תומך ?איך OMA Push QR Codes SMS … 28. Consider Mobile Specific Technologies for Initiating Web Applications www.w3.org/TR/mwabp 70 הגדירו את גודל התצוגה הרצוי.29 ?מה צריך למנוע ממכשירים לעשות זום אוטומטי באפליקציה שהותאמה ....לניידים ?איך <meta name="viewport" content="width=device-width, initial-scale=1.0"/> ...דוגמא 29. Use Meta Viewport Element To Identify Desired Screen Sizes www.w3.org/TR/mwabp 71 הגדרת גודל תצוגה- דוגמא Viewport Offlines Data URI http://nils-dehl.de/m/ j.mp/w3cmo9 www.w3.org/TR/mwabp 72 30. Prefer Server-Side Detection Where Possible ?איך HTTP request header: Accept User-Agent X-Wap-Profile :דוגמא 30. Prefer Server-side Detection Where Possible j.mp/w3cmo11 www.w3.org/TR/mwabp 73 ' כשצריך – זיהוי יכולות 'צד לקוח.31 ?איך JavaScript: if (some_api_exists) { ... CSS Media Types CSS Media Queries ...דוגמא 31. Use Client-side Detection When Necessary www.w3.org/TR/mwabp 74 CSS3 Media query layout example j.mp/w3cmo18 www.w3.org/TR/mwabp 32. Use Device Classification ?למה to Simplify Content Adaptation ?איך :אפשרות Class 1: Basic XHTML support, no or very basic scripting. Class 2: Full AJAX and JavaScript support. Class 3: Advanced device APIs :עוד אפשרות Class 1: Pointer Based. Class 2: Touch Based. 32. Use Device Classification to Simplify Content Adaptation www.w3.org/TR/mwabp 76 JavaScript לתפוצה מרבית – צרו גרסה ללא.33 ?איך synchronous FORM posts >noscript> או לפחות – הודעה מתאימה או 33. Support a non-JavaScript Variant if Appropriate www.w3.org/TR/mwabp 77 .34אפשר למשתמש לבחור את התצוגה מה? אפשר למשתמש לשנות את סוג התצוגה כברירת מחדל ספק את הUI- המתאים ביותר אבל זכור את העדפות המשתמש! 34. Offer Users a Choice of Interfaces www.w3.org/TR/mwabp 78 .1 .2 .3 .4 .5 .6 נתוני האפליקציה ביטחון מידע ופרטיות ()1 יידוע המשתמש ושליטתו באפליקציה ()4 שימוש מוגבל במשאבים ()11 חווית משתמש ()10 התאמה ל)5( Delivery Context- ()3 .7שיקולים נוספים ()1 www.w3.org/TR/mwabp/ www.w3c.org.il 79 35. Consider Canvas or SVG For Dynamic Graphics ?מה canvas מאפשר לצייר גרפיקה פשוטה JavaScript באמצעות SVG להגדרת אלמנטים שלXML שפת -גרפיקה וקטורית המתווספים ל וניתנים לשינוי בעזרת,DOM JavaScript http://www.mozilla.com/en-US/firefox/stats/ ...דוגמא 35. Consider Use Of Canvas Element or SVG For Dynamic Graphics www.w3.org/TR/mwabp 80 SVG and canvas demos • Bomomo.com • zwibbler.com • www.iconza.com j.mp/w3cmo16 j.mp/w3cmo14 Video - Cool mobile apps with SVG and other Web technologies - j.mp/w3cmo13 www.w3.org/TR/mwabp כלים נוספים www.w3.org/TR/mwabp 82 Mobile Web Best Practices (MWBP) Flipcards j.mp/w3cfcc www.w3.org/TR/mwabp 83 The world is getting more platform-fragmented, not less. Source: j.mp/w3cmo5 84 Do www.w3.org/TR/mwabp/ yourself a favor and write your next app in HTML5. www.w3c.org.il תודה www.w3c.org.il @isociltech @eyalsela eyal@isoc.org.il j.mp/w3cmobp www.w3.org/TR/mwabp 85