Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
58ͬ³ÇiOS¿Í»§¶ËHybrid¿ò¼Ü̽Ë÷
 
À´Ô´£º¼«¿ÍÍ·Ìõ ·¢²¼ÓÚ2017-7-26
  3232  次浏览      27
 

58ͬ³ÇiOS¿Í»§¶ËµÄHybrid¿ò¼ÜÔÚ×î³õÉè¼ÆºÍÑݽøµÄ¹ý³ÌÖУ¬Óöµ½ÁËÐí¶àÎÊÌ⡣Ϊ´Ë£¬Õû¸öHybrid¿ò¼Ü²úÉúÁ˺ܴóµÄ±ä»¯¡£±¾ÎÄ×÷Õß½«Óöµ½µÄµäÐÍÎÊÌâ½øÐÐÁË×ܽᣬ²¢Öصã½éÉÜ58 iOS²ÉÓõĽâ¾ö·½°¸£¬Ï£ÍûÄܸø¶ÁÕߴ×Ô¼ºµÄHybrid¿ò¼ÜÌṩһЩ²Î¿¼¡£

ÒýÑÔ

Hybrid AppÊÇָͬʱʹÓÃNativeÓëWebµÄApp¡£Native½çÃæ¾ßÓÐÁ¼ºÃµÄÓû§ÌåÑ飬µ«ÊDz»Ò×¶¯Ì¬¸Ä±ä£¬ÇÒ¿ª·¢³É±¾½Ï¸ß¡£¶ÔÓڱ䶯½Ï´óµÄÒ³Ãæ£¬Ê¹ÓÃWebÀ´ÊµÏÖÊÇÒ»¸ö±È½ÏºÃµÄÑ¡Ôñ£¬ËùÒÔ£¬Ä¿Ç°ºÜ¶àÖ÷Á÷App¶¼²ÉÓÃNativeÓëWeb»ìºÏµÄ·½Ê½´î½¨¡£58ͬ³Ç¿Í»§¶ËÉÏÏß²»¾Ã¼´²ÉÓÃÁËHybrid·½Ê½£¬ÖÁ½ñÒÑÓÐÁùÆßÄê¡£¶øiOS¿Í»§¶ËµÄHybrid¿ò¼ÜÔÚ×î³õÉè¼ÆºÍÑݽøµÄ¹ý³ÌÖУ¬Ëæ×Åʱ¼äÍÆÒÆºÍÒµÎñÐèÇóµÄ²»¶ÏÔö¼Ó£¬Óöµ½ÁËÐí¶àÎÊÌ⡣ΪÁ˽â¾öËüÃÇ£¬Õû¸öHybrid¿ò¼Ü²úÉúÁ˺ܴóµÄ±ä»¯¡£±¾ÎĽ«Óöµ½µÄµäÐÍÎÊÌâ½øÐÐÁË×ܽᣬ²¢Öصã½éÉÜ58 iOS²ÉÓõĽâ¾ö·½°¸£¬Ï£ÍûÄܸø¶ÁÕߴ×Ô¼ºµÄHybrid¿ò¼ÜһЩ²Î¿¼¡£Ö÷Òª°üÀ¨ÒÔÏÂËĸö·½Ã棺

1. ͨѶ·½Ê½ÒÔ¼°Í¨Ñ¶¿ò¼Ü

58 App×î³õ²ÉÓõÄWebµ÷ÓÃNativeµÄͨѶ·½Ê½ÊÇAJAXÇëÇ󣬲»½ö´æÔÚÄÚ´æÐ¹Â¶ÎÊÌ⣬ÇÒNativeÔڻص÷¸øWeb½á¹ûʱÎÞ·¨È·¶¨»Øµ÷¸øÄĸöWeb View¡£ÁíÍ⣬ÈçºÎ´î½¨Ò»¸ö¼òµ¥¡¢ÊµÓá¢À©Õ¹ÐԺõÄHybrid¿ò¼ÜÊÇÒ»¸öÖØµãÄÚÈÝ¡£ÕâЩÄÚÈݽ«ÔÚͨѶ²¿·ÖÏêϸ½éÉÜ¡£

2. »º´æÔ­Àí¼°»º´æ¿ò¼Ü

ÌáÉýWebÒ³ÃæÏìÓ¦ËٶȵÄÒ»¸öÓÐЧÊֶξÍÊÇʹÓûº´æ¡£58 iOS¿Í»§¶ËÈçºÎ¶ÔWeb×ÊÔ´½øÐлº´æÒÔ¼°ÈçºÎ´î½¨Hybrid»º´æ¿ò¼Ü½«ÔÚ»º´æ²¿·Ö½éÉÜ¡£

3. ÐÔÄÜ

iOS 8ÍÆ³öÁËWebKit¿ò¼Ü£¬ºËÐÄÊÇWKWebView£¬ÆäÔÚÐÔÄÜÉÏÒªÔ¶ÓÅÓÚUIWebView£¬²¢ÇÒÌṩÁËһЩÐµĹ¦ÄÜ£¬µ«Òź¶µÄÊÇWKWebView²»Ö§³Ö×Ô¶¨Ò建´æ¡£ÎÒÃǾ­¹ýµ÷ÑкͲâÊÔ·¢ÏÖÁËһЩ´ÓUIWebViewÉý¼¶µ½WKWebViewµÄ¿ÉÐнâ¾ö·½°¸£¬½«ÔÚÐÔÄܲ¿·ÖÖØµã½éÉÜ¡£

4. ñîºÏ

58 iOS¿Í»§¶Ë×î³õµÄHybrid¿ò¼ÜÉè¼Æ¹ýÓÚ¼òµ¥£¬µ¼ÖÂWebÔØÌåÒ³½¥½¥±äµÃÊ®·ÖÓ·Ö×£¬¼Ì³Ð¹ØÏµÊ®·Ö¸´ÔÓ¡£ñîºÏ²¿·ÖÏêϸ½éÉÜÁËÆ½ÎȽâ¾öÔØÌåÒ³ñîºÏÎÊÌâµÄ·½°¸¡£

ͨѶ

Hybrid¿ò¼ÜÊ×ÏÈÒª¿¼ÂǵÄÎÊÌâ¾ÍÊÇWebÓëNativeÖ®¼äµÄͨѶ¡£Æ»¹ûÔÚiOS 7ÏµÍ³ÍÆ³öÁËJavaScriptCore.framework¿ò¼Ü£¬Í¨¹ý¸Ã¿ò¼Ü¿ÉÒÔ·½±ãµØÊµÏÖJavaScriptÓëNativeµÄͨѶ¹¤×÷¡£µ«ÊÇÔÚ58 App×îÔçÒýÈëHybridʱ£¬ÐèÒªÖ§³ÖiOS 7ÒÔϵÄϵͳ°æ±¾£¬ËùÒÔ58 App²¢Ã»ÓÐʹÓÃJavaScriptCore.framework£¬¶øÊDzÉÓÃÁ˸üԭʼµÄ·½Ê½¡£

´«Í³µÄͨѶ·½Ê½£¨Èçͼ1Ëùʾ£©ÖУ¬Nativeµ÷ÓÃJavaScript´úÂë±È½Ï¼òµ¥£¬Ö±½ÓʹÓÃUIWebViewÌṩµÄ½Ó¿ÚstringByEvaluatingJavaScriptFromString:¾Í¿ÉÒÔʵÏÖ¡£¶øJavaScriptµ÷ÓÃNativeµÄ¹¦ÄÜÐèҪͨ¹ýÀ¹½ØÇëÇóµÄ·½Ê½À´ÊµÏÖ¡£¼´JavaScript·¢ËÍÒ»¸öÌØÊâµÄURLÇëÇ󣬸ÃÇëÇó²¢²»ÊÇÕæÕýµÄÍøÂç·ÃÎÊÇëÇ󣬶øÊǵ÷ÓÃNative¹¦ÄܵÄÇëÇ󣬲¢´«µÝÏà¹ØµÄ²ÎÊý¡£Native¶ËÊÕµ½ÇëÇóºó½øÐÐÅжϣ¬Èç¹ûÊǹ¦Äܵ÷URLÇëÇóÔòµ÷ÓÃNativeµÄÏàÓ¦¹¦ÄÜ£¬¶ø²»½øÐÐÍøÂç·ÃÎÊ¡£

 

ͼ1 ´«Í³µÄͨѶ·½Ê½Á÷³Ì

°´ÕÕÉÏÃæµÄ˼·£¬ÔÚʵÏÖHybridͨѶʱ£¬ÎÒÃÇÐèÒª¿¼ÂÇÒÔϼ¸¸öÎÊÌ⣺

ͨѶ·½Ê½

ǰ¶ËÄÜ·¢ÆðÇëÇóµÄ·½·¨ÓкܶàÖÖ£¬±ÈÈçʹÓÃwindow.open()·½·¨¡¢AJAXÇëÇó¡¢¹¹ÔìiframeµÈ£¬ÉõÖÁÓÚʹÓÃimg±êÇ©µÄsrcÊôÐÔÒ²¿ÉÒÔ·¢ÆðÇëÇó¡£58 App×îÔçÊÇʹÓÃAJAXÇëÇóÀ´·¢ÆðNativeµ÷Óõģ¬ÕâÖÖ·½Ê½ÔÚ×î³õÖ§³ÅÁË58 AppÖÐHybridºÜ³¤Ò»¶Îʱ¼ä£¬²»¹ýÈ´´æÔÚÁ½¸öºÜÑÏÖØµÄȱÏÝ£º

Ò»ÊÇÄÚ´æÎÊÌ⣺ÔÚiOS 8ÒÔǰ£¬iOSÖÐÄÚǶWebÒ³¶¼ÊÇͨ¹ýϵͳÌṩµÄUIWebViewÀ´ÊµÏֵġ£¶øÔÚUIWebViewÖУ¬JavaScriptÔÚ´´½¨XMLHttpRequest¶ÔÏ󷢯ðAJAXÇëÇóºó£¬»á´æÔÚÄÚ´æÐ¹Â¶ÎÊÌâ¡£ÔÚʵÏÖµÄÓ¦ÓÃÖУ¬JavaScriptÓëNativeµÄ½»»¥²Ù×÷ÊÇºÜÆµ·±µÄ£¬Ê¹ÓÃXMLHttpRequest»áÒýÆð±È½ÏÑÏÖØµÄÄÚ´æÎÊÌâ¡£

¶þÊÇÀ¹½Ø·½·¨£ºUIWebViewÖеÄÕý³£URLÇëÇó»á´¥·¢Æä´úÀí·½·¨£¬ÎÒÃÇ¿ÉÒÔÔÚÆä´úÀí·½·¨ÖнøÐÐÀ¹½Ø¡£µ«ÊÇAJAXÇëÇóÊÇÒ»¸öÒì²½µÄÊý¾ÝÇëÇ󣬲¢²»»á´¥·¢UIWebViewµÄ´úÀí·½·¨¡£ÎÒÃÇÐèÒª×Ô¶¨ÒåAppÖеÄNSURLCache»òNSURLProcotol¶ÔÏó£¬ÔÚÆäÖпÉÒÔÀ¹½Øµ½URLÇëÇó¡£µ«ÊÇÕâÖÖ·½Ê½ÓÐÁ½¸öÎÊÌ⣬һ¸öÊǵ±ÊÕµ½¹¦Äܵ÷ÓÃÇëÇóʱ£¬²»Ò×È·¶¨ÊÇÄĸöWeb View¶ÔÏ󷢯ðµÄµ÷Ó㬻ص÷ʱҲÎÞ·¨È·¶¨µ÷ÓÃÄĸöWeb ViewµÄ»Øµ÷·½·¨¡£ÎªÁ˽â¾öÕâ¸öÎÊÌ⣬58 AppµÄHybrid¿ò¼Üά»¤ÁËÒ»¸öWeb ViewÕ»£¬¼Ç¼ËùÓÐÊÓͼ²ãÖеÄWeb View£¬Ç°¶ËÔÚ·¢ÆðNativeµ÷ÓÃʱ£¬¸½¼ÓÒ»¸öWeb ViewµÄΨһ±êʶÐÅÏ¢¡£ÔÚNativeÐèÒª»Øµ÷JavaScript·½·¨Ê±£¬Í¨¹ýWeb ViewµÄΨһ±êʶÐÅÏ¢ÔÚWeb ViewÕ»ÖÐÕÒµ½¶ÔÓ¦µÄWeb View¡£ÁíÒ»¸öÊǶÔAppµÄ¿ò¼Ü½á¹¹ÓÐÓ°Ï죬HybridÖеÄÒ»¸ö¼òµ¥µÄµ÷ÓÃÐèÒª·ÅÔÚAppµÄÈ«¾Ö¶ÔÏó½øÐÐÀ¹½Ø´¦Àí£¬ÆÆ»µHybrid¿ò¼ÜµÄÄÚ¾ÛÐÔ£¬Î¥·´ÃæÏò¶ÔÏóÉè¼ÆÔ­Ôò¡£

iframe³Æ×÷ǶÈëʽ¿ò¼Ü£¬ºÍ¿ò¼ÜÍøÒ³ÀàËÆ£¬Ëü¿ÉÒÔ°ÑÒ»¸öÍøÒ³µÄ¿ò¼ÜºÍÄÚÈÝǶÈëÔÚÏÖÓеÄÍøÒ³ÖС£iframeÊÇÔÚÏÖÓеÄÍøÒ³ÖÐÔö¼ÓÒ»¸ö¿ÉÒÔµ¥¶ÀÔØÈëÍøÒ³µÄ´°¿Ú£¬Í¨¹ýÔÚHTMLÒ³ÃæÖд´½¨´óСΪ0µÄiframe£¬¿ÉÒÔ´ïµ½ÔÚÓû§ÍêÈ«ÎÞ¸ÐÖªµÄÇé¿öÏ·¢ÆðÇëÇóµÄÄ¿µÄ¡£Ê¹ÓÃiframe·¢ËÍÇëÇóµÄ´úÂëÈçÏ£º

var iframe = document.createElement("iframe");
//ÉèÖÃiframe¼ÓÔØµÄÒ³ÃæÁ´½Ó
iframe.src = ¡° http://127.0.0.1/NativeFunction?parameters=values¡±;
//ÏòDOM treeÖÐÌí¼ÓiframeÔªËØ£¬ÒÔ´¥·¢ÇëÇó
document.body.AppendChild(iframe);
//ÇëÇó´¥·¢ºó£¬ÒƳýiframe
iframe.parentNode.removeChild(iframe);
iframe = null;

iframeÊǼÓÔØÒ»¸öеÄÒ³Ãæ£¬ÇëÇó»á×ßUIWebViewµÄ´úÀí·½·¨£¬²»´æÔÚAJAXÇëÇóÖÐÎÞ·¨È·¶¨Web ViewµÄÎÊÌâ¡£¾­¹ýµ÷ÑвâÊÔ£¬¶à´Î´´½¨ºÍÊÍ·Åiframe²»»á´æÔÚÄÚ´æÐ¹Â¶µÄÎÊÌâ¡£´ÓÕâÁ½¸ö·½ÃæÀ´Ëµ£¬Ê¹ÓÃiframeÊÇÔ¶ÓÅÓÚʹÓÃAJAXµÄ£¬±È½ÏÓÐÃûµÄPhoneGapºÍWebViewJavascriptBridgeµ×²ã¶¼ÊDzÉÓõÄiframe½øÐÐͨѶµÄ¡£

iframeÊÇǰ¶Ëµ÷ÓÃNative·½·¨µÄÒ»¸ö·Ç³£ÓÅÐãµÄ·½°¸£¬µ«ËüÒ²´æÔÚһЩϸ΢µÄ¾ÖÏÞÐÔ¡£58 Appǰ¶ËΪÁËÌáÉý´úÂëµÄ¸´ÓÃÐԺͷ½±ãʹÓÃNativeµÄ¹¦ÄÜ£¬¶ÔiframeµÄͨѶ·½Ê½½øÐÐÁËͳһ·â×°£¬·â×°µÄ¾ßÌåʵÏÖÊÇ¡ª¡ªÔÚJavaScript´úÂëÖж¯Ì¬µØÏòDOM treeÉÏÌí¼ÓÒ»¸ö´óСΪ0µÄiframe£¬ÔÚÇëÇ󷢯ðºóÁ¢¿Ì½«ÆäÒÆ³ý¡£Õâ¸ö²Ù×÷µÄǰÌáÊÇDOM treeÒѾ­Ðγɣ¬Ò²¾ÍÊÇ˵ÔÚDOM Tree½øÐÐ֮ǰ£¬Õâ¸ö·½°¸ÊÇÐв»Í¨µÄ¡£ä¯ÀÀÆ÷½âÎöHTMLµÄÏêϸ¹ý³ÌΪ£º

1.½ÓÊÜÍøÂçÊý¾Ý£»

2.½«¶þ½øÖÆÂë±ä³É×Ö·û£»

3.½«×Ö·û±äΪUnicode code points£»

4.Tokenizer£»

5.Tree Constructor£»

6.DOM Ready£»

7.Window Ready¡£

Dom Readyʼþ¾ÍÊÇDOM Tree´´½¨Íê³Éºó´¥·¢µÄ¡£ÔÚÒµÎñ¿ª·¢¹ý³ÌÖУ¬ÓÐÉÙÁ¿±È½ÏÌØÊâµÄÐèÇó£¬ÐèÒªÔÚDOM Readyʼþ֮ǰ·¢ÆðNative¹¦Äܵĵ÷Ó㬶ø¶¯Ì¬Ìí¼ÓiframeµÄ·½·¨²¢²»ÄÜÂú×ãÕâÖÖÐèÇó¡£Îª´Ë£¬ÎÒÃÇ¶ÔÆäËû¼¸ÖÖ·¢ÆðÇëÇóµÄ·½·¨½øÐÐÁ˵÷²é£¬°üÀ¨Ç°ÎÄÌáµ½µÄAJAXÇëÇó¡¢Îªwindow.location.href¸³Öµ¡¢Ê¹ÓÃimg±êÇ©µÄsrcÊôÐÔ¡¢µ÷ÓÃwindow.open()·½·¨£¨¸÷¸ö·½Ê½µÄ±íÏÖ½á¹ûÈç±í1Ëùʾ£©¡£

±í1 ÎåÖÖ·½·¨Ð§¹û¶Ô±È

½á¹ûÏÔʾ£¬ÆäËû¼¸ÖÖ·½Ê½³ýwindow.open()Óëiframe±íÏÖ»ù±¾ÏàͬÍ⣬¶¼ÓбȽÏÖÂÃüµÄȱÏÝ¡£AJAXÓÐÄÚ´æÎÊÌ⣬²¢ÇÒÎÞ·¨Ê¹ÓÃWeb View´úÀíÀ¹½ØÇëÇó£¬window.location.hrefÔÚÁ¬Ðø¸³ÖµÊ±Ö»ÓÐÒ»´ÎÉúЧ£¬img±êÇ©²»ÐèÒªÌí¼Óµ½DOM TreeÉÏÒ²¿É·¢ÆðÇëÇ󣬵«ÊÇÎÞ·¨Ê¹ÓÃWeb View´úÀíÀ¹½Ø£¬²¢ÇÒÏàͬµÄURLÇëÇóÖ»·¢Ò»´Î¡£

¶ÔÓÚÔÚDOM Ready֮ǰÐèÒª·¢ÆðNativeµ÷ÓõÄÎÊÌ⣬×îÖÕ²ÉÈ¡µÄ½â¾ö·½°¸ÊǾ¡Á¿±ÜÃâÕâÖÖÐèÇó¡£ÎÞ·¨±ÜÃâµÄ½øÐÐÌØÊâ´¦Àí£¬Í¨¹ýÔÚHTMLÖÐÌí¼Ó¾²Ì¬µÄiframeÀ´½â¾ö¡£

ͨѶЭÒé

ͨѶЭÒéÊÇÕû¸öHybridͨѶ¿ò¼ÜµÄÁé»ê£¬Ö±½ÓÓ°Ïì×ÅHybrid¿ò¼Ü½á¹¹ºÍÕû¸öHybridµÄÀ©Õ¹ÐÔ¡£ÎªÁ˱£Ö¤¾¡Á¿¸ßµÄÀ©Õ¹ÐÔ£¬58 AppÖвÉÓÃÁË×ÖµäµÄ¸ñʽÀ´´«µÝ²ÎÊý¡£Ò»¸öÍêÕûµÄNative¹¦Äܵ÷ÓõÄURLÈçÏ£º

¡°Hybrid://iframe?parameter={¡°action¡±:¡±changetitle¡±,¡±title¡±:¡±±êÌ⡱}

ÆäÖС°Hybrid¡±ÊÇNativeµ÷Óõıêʶ£¬Native¶ËÔÚÀ¹½Øµ½ÇëÇóºóÅжÏÇëÇóURLµÄǰ׺ÊÇ·ñΪ¡°Hybrid¡±£¬Èç¹ûÊÇÔòµ÷ÆðNative¹¦ÄÜ£¬Í¬Ê±×èÖ¹¸ÃÇëÇó¼ÌÐø½øÐС£Native¹¦Äܵ÷ÓõÄÏàÓ¦²ÎÊýÔÚparameterºóÃæµÄJSONÊý¾ÝÀÆäÖС°action¡±×Ö¶ÎÖ¸Ã÷µ÷ÓÃÄĸöNative¹¦ÄÜ£¬ÆäÓà×Ö¶ÎÊǵ÷Óøù¦ÄÜÐèÒªµÄ²ÎÊý¡£ÒòΪ¡°action¡±×Ö¶ÎÃû³ÆµÄÔ­Òò£¬ºóÀ´°ÑΪWebÌṩµÄNative¹¦ÄܵĴ¦ÀíÂß¼­³ÆÎªaction´¦Àí¡£

ÕâÑùÖÆ¶¨Í¨Ñ¶Ð­ÒéÓкÜÇ¿µÄ¿ÉÀ©Õ¹ÐÔ£¬Native¶ËÈÎÒâÔö¼ÓеÄHybrid½Ó¿Ú£¬Ö»ÒªÎªaction×ֶζ¨Ò»¸öÐÂÖµ£¬¾Í¿ÉÒÔʵÏÖ£¬Ð½ӿÚÐèÒªµÄ²ÎÊýÍêÈ«×Ô¶¨Òå¡£µ«ÊÇÕâÖÖÁé»îµÄЭÒé¸ñʽ´æÔÚÒ»¸öÎÊÌ⣬¾ÍÊÇ¿ª·¢ÕߺÜÄѼÇסÿÖÖµ÷ÓÃЭÒéµÄ²ÎÊý×ֶΣ¬¿ª·¢¹ý³ÌÖÐÐèÒª²é¿´ÎĵµÀ´µ÷ÓÃNative¹¦ÄÜ£¬ÐèÒª¸ü³¤µÄ¿ª·¢Ê±¼ä¡£Îª´Ë58 AppÊ×ÏȽ¨Á¢Á˽¡È«µÄЭÒéÎĵµ£¬½«Ã¿ÖÖµ÷ÓÃЭÒé¶¼Ò»Ò»Áо٣¬²¢¸ø³öµ÷ÓÃʾÀý£¬·½±ãǰ¶Ë¿ª·¢Õß²éÔÄ¡£ÁíÍ⣬Native¶Ë¿ª·¢ÁËÒ»Ì×ЭÒéÊý¾ÝУÑéϵͳ£¬¸Ãϵͳ½«Ã¿ÖÖµ÷ÓÃЭÒéµÄ²ÎÊýÒªÇóÓÃXMLÎĵµ±íʾ³öÀ´£¬ÔÚÊÕµ½Nativeµ÷ÓÃЭÒéÊý¾Ýʱ£¬¶¯Ì¬µØ½âÎöÊý¾ÝÄÚ²¿ÊÇ·ñ·ûºÏXMLÎĵµÖеÄÒªÇó£¬Èç¹û²»·ûºÏÔò½ûÖ¹µ÷ÓÃNative¹¦ÄÜ£¬²¢ÌáʾÄÄÀï²»·ûºÏÒªÇó¡£

¿ò¼ÜÉè¼Æ

ÒÀÕÕÉÏÃæµÄͨѶЭÒ飬58 AppÖÐĿǰµÄHybridµÄ¿ò¼ÜÉè¼ÆÈçͼ2Ëùʾ¡£ÆäÖУº

ͼ2 Hybrid¿ò¼ÜÉè¼Æ

Native»ù´¡·þÎñÊÇNative¶ËÒÑÓеÄһЩͨÓõÄ×é¼þ»ò½Ó¿Ú£¬ÔÚNative¶Ë¸÷´¦¶¼ÔÚµ÷Ó㬱ÈÈçÂñµãϵͳ¡¢Í³Ò»Ìø×ª¼°È«¾ÖalertÌáʾ¿òµÈ¡£ÕâЩ¹¦ÄÜÔÚijЩWebÒ³ÃæÒ²»áÐèҪʹÓõ½¡£

Native Hybrid¿ò¼ÜÊÇÕû¸öHybridµÄºËÐIJ¿·Ö£¬ÆäÄÚ²¿·â×°Á˳ý»º´æÒÔÍâµÄËùÓÐHybridÏà¹ØµÄ¹¦ÄÜ¡£Native Hybrid¿ò¼Ü¿É´óÖ·ÖΪWebÔØÌå¡¢Hybrid´¦ÀíÒýÇæ¡¢Hybrid¹¦ÄܽӿÚÈý²¿·Ö¡£Ð£ÑéϵͳÊÇǰÎÄÌáµ½µÄÔÚ¿ª·¢¹ý³ÌÖÐУÑéЭÒéÊý¾Ý¸ñʽµÄÄ£¿é£¬·½±ãǰ¶Ë¿ª·¢ÕßÔÚ¿ª·¢¹ý³ÌÖпìËÙ¶¨Î»ÎÊÌâ¡£

WebÔØÌå°üº¬WebÔØÌåÒ³ºÍWeb View×é¼þ£¬ËùÓеÄHybridÒ³ÃæÊ¹ÓÃͳһµÄWebÔØÌåÒ³¡£WebÔØÌåÒ³ÌṩÁËËùÓÐWebÒ³Ãæ¶¼¿ÉÄÜ»áʹÓõ½µÄ¹¦ÄÜ£¬¶øWeb View×é¼þΪÁËʵÏÖWeb ViewµÄһЩ¶¨ÖÆÐèÇ󣬶ÔϵͳµÄWeb View½øÐÐÁ˼̳У¬²¢ÖØÐ´ÁËijЩ¸¸Àà·½·¨¡£

Hybrid´¦ÀíÒýÇæ¸ºÔð´¦ÀíWebÒ³Ãæ·¢Æðʼþ£¬ÊÇWeb View×é¼þµÄ´úÀí¶ÔÏó£¬Ò²ÊÇWebµ÷ÓÃNative¹¦ÄܵÄͨѶÇÅÁº¡£Ç°ÃæÌáµ½µÄÅжÏWebÇëÇóÊÇÒ³ÃæÔØÈëÇëÇó»¹ÊÇNative¹¦Äܵ÷ÓÃÇëÇóµÄÂß¼­ÔÚHybrid´¦ÀíÒýÇæÖÐʵÏÖ¡£ÔÚÅж¨ÇëÇóΪNative¹¦Äܵ÷ÓÃÇëÇóºó£¬Hybrid´¦ÀíÒýÇæ¸ù¾ÝÇëÇó²ÎÊýÖеġ°action¡±×ֶεÄÖµ¶Ô¸ÃNativeµ÷ÓÃÇëÇó½øÐзַ¢£¬ÕÒµ½¶ÔÓ¦µÄHybrid¹¦ÄÜ×é¼þ£¬²¢½«²ÎÊý´«µÝ¸ø¸Ã×é¼þ£¬ÓÉ×é¼þ½øÐÐÕæÕýµÄ´¦Àí¡£

Hybrid¹¦ÄÜ×é¼þ²¿·Ö°üº¬ÁËËùÓпª·Å¸øÇ°¶Ëµ÷ÓõŦÄÜ¡£ÕâЩ¹¦ÄÜ¿ÉÒÔ·Ö³ÉÁ½À࣬һÀàÊÇÐèÒªNative»ù´¡·þÎñÖ§³ÅµÄ£¬ÁíÒ»ÀàÊÇHybrid¿ò¼ÜÄÚ²¿¿ÉÒÔ´¦ÀíµÄ¡£ÐèÒªNative»ù´¡·þÎñÖ§³ÅµÄ¹¦ÄÜ£¬ÈçÂñµã¡¢Í³Ò»Ìø×ª¡¢NativeÄ£¿é»¯×é¼þ£¨Í¼Æ¬Ñ¡Ôñ¡¢µÇ¼µÈ£©£¬±¾ÉíÔÚNative¶ËÒѾ­ÓпÉÓõijÉÊìµÄ×é¼þ¡£ÕâЩHybrid¹¦ÄÜ×é¼þËù×öµÄÊÂÊǽâÎöWebÒ³´«µÝ¹ýÀ´µÄ²ÎÊý£¬½«²ÎÊýת»»ÎªNative×é¼þ¿ÉÓõÄÊý¾Ý£¬²¢µ÷ÓÃÏàÓ¦µÄNative»ù´¡·þÎñ£¬½«»ù´¡·þÎñ·µ»ØµÄÊý¾Ýת»»¸ñʽ»Øµ÷¸øWeb¡£ÁíÒ»ÀàHybrid¹¦ÄÜ×é¼þͨ³£ÊDZȽϼòµ¥µÄ²Ù×÷£¬±ÈÈç¸Ä±äWebÔØÌåÒ³µÄ±êÌâºÍµ¼º½À¸°´Å¥¡¢Ë¢Ð»òÕß·µ»ØµÈ¡£ÕâЩ×é¼þͨ¹ý´úÀíµÄ·½Ê½»ñÈ¡ÔØÌåÒ³ºÍWeb View¶ÔÏó£¬¶ÔÆä½øÐÐÏàÓ¦µÄ²Ù×÷¡£

ÔÙ¿´Web¶Ë£¬Ç°¶Ë¶ÔHybridͨѶ½øÐÐÁËÒ»²ã·â×°£¬½«·¢ËÍNativeµ÷ÓÃÇëÇóµÄÂß¼­Í³Ò»·âװΪһ¸ö·½·¨£¬ÒµÎñ²ãÐèÒªµ÷ÓÃNative¹¦ÄÜʱµ÷ÓÃÕâ¸ö·½·¨£¬´«ÈëactionÃû³Æ¡¢²ÎÊý£¬¼´¿ÉÍê³Éµ÷Óᣵ±ÐèÒª»Øµ÷ʱ£¬ÐèÒªÏȶ¨ÒåÒ»¸ö»Øµ÷·½·¨£¬È»ºóÔÚ²ÎÊýÖн«·½·¨Ãû´øÉϼ´¿É¡£

»º´æ

WebÒ³Ãæ¾ßÓÐʵʱ¸üеÄÌØµã£¬ËüΪAppÌṩÁ˲»ÒÀÀµ·¢°æ¾ÍÄܸüеÄÄÜÁ¦¡£µ«ÊÇÿ´Î¶¼ÇëÇóÍêÕûµÄÒ³Ãæ£¬Ôö¼ÓÁËÁ÷Á¿µÄÏûºÄ£¬²¢ÇÒ½çÃæÕ¹Ê¾ÒÀÀµÍøÂ磬ÐèÒª¸ü³¤µÄʱ¼äÀ´¼ÓÔØ£¬¸øÓû§±È½Ï²îµÄÌåÑé¡£ËùÒÔ¶ÔһЩ³£ÓõIJ»ÐèҪÿ´Î¶¼¸üеÄÄÚÈݽøÐлº´æÊǺÜÖØÒªµÄ¡£ÁíÍ⣬WebÒ³ÃæÐèÒªÓõ½µÄijЩCSSºÍJavaScript×ÊÔ´Êǹ̶¨²»±äµÄ£¬¿ÉÒÔÖ±½ÓÄÚÖõ½App°üÖС£ËùÒÔ£¬ÔÚHybridÖУ¬»º´æÊDZز»¿ÉÉٵŦÄÜ¡£ÒªÊµÏÖHybrid»º´æ£¬ÐèÒª¿¼ÂÇÈý¸ö·½ÃæµÄÎÊÌ⣬¼´Hybrid»º´æÊµÏÖÔ­Àí¡¢»º´æ²ßÂÔºÍHybrid»º´æ¿ò¼ÜÉè¼Æ¡£

»º´æÊµÏÖÔ­Àí

NSURLCacheÊÇiOSϵͳÌṩµÄÒ»¸öÀ࣬ÿ¸öApp¶¼´æÔÚÒ»¸öNSURLCacheµÄµ¥Àý¶ÔÏ󣬼´Ê¹¿ª·¢ÕßûÓÐÌí¼ÓÈκÎÓйØNSURLCacheµÄ´úÂ룬ϵͳҲ»áΪApp´´½¨Ò»¸öĬÈϵÄNSURLCacheµ¥Àý¶ÔÏó¡£¼¸ºõAppÖеÄËùÓÐÍøÂçÇëÇó¶¼»áµ÷ÓÃÕâ¸öµ¥Àý¶ÔÏóµÄcachedResponseForRequest:·½·¨¡£¸Ã·½·¨ÊÇϵͳ´Ó»º´æÖлñÈ¡Êý¾ÝµÄ·½·¨£¬Èç¹û»º´æÖÐÓÐÊý¾Ý£¬Í¨¹ýÕâ¸ö·½·¨½«»º´æÊý¾Ý·µ»Ø¸øÇëÇóÕß¼´¿É£¬²»±Ø·¢ËÍÍøÂçÇëÇó¡£Í¨¹ýʹÓÃNSURLCacheµÄ×Ô¶¨Òå×ÓÀàÌæ»»Ä¬ÈϵÄÈ«¾ÖNSURLCacheµ¥Àý£¬²¢ÖØÐ´cachedResponseForRequest:·½·¨£¬¿ÉÒԽػñAppÄÚ¼¸ºõËùÓеÄÍøÂçÇëÇ󣬲¢¾ö¶¨ÊÇ·ñʹÓûº´æÊý¾Ý¡£

µ±Ã»Óлº´æ¿ÉÓÃʱ£¬ÎÒÃÇÔÚcachedResponseForRequest:·½·¨Öзµ»Ønull¡£Õâʱϵͳ»á·¢ÆðÍøÂçÇëÇó£¬Äõ½ÇëÇóÊý¾Ýºó£¬ÏµÍ³»áµ÷ÓÃNSURLCacheʵÀýµÄstoreCachedResponse:forRequest:·½·¨£¬½«ÇëÇóÐÅÏ¢ºÍÇëÇóµÃµ½µÄÊý¾Ý´«ÈëÕâ¸ö·½·¨¡£Appͨ¹ýÖØÐ´Õâ¸ö·½·¨¾Í¿ÉÒÔ´ïµ½¸üлº´æµÄÄ¿µÄ¡£

58 AppĿǰ¾ÍÊÇͨ¹ýÌæ»»È«¾ÖµÄNSURLCache¶ÔÏó£¬À´ÊµÏÖÀ¹½ØAppÄÚµÄURLÇëÇó¡£ÔÚ×Ô¶¨ÒåNSURLCache¶ÔÏóµÄcachedResponse ForRequest:·½·¨ÖÐÅжÏÇëÇóµÄURLÊÇ·ñÓжÔÓ¦µÄ»º´æ£¬Èç¹ûÓлº´æÔò·µ»Ø»º´æÊý¾Ý£¬Ã»ÓÐÔòÔÙÕý³£×ßÍøÂçÇëÇó¡£ÇëÇóÍê³ÉºóÔÚstore CachedResponse:forRequest:·½·¨Öн«ÇëÇóµ½µÄÊý¾Ý°´Ðè¼ÓÈ뻺´æÖС£

ʹÓÃÌæ»»NSURLCacheµÄ·½·¨Ê±ÐèҪעÒâÌæ»»NSURLCacheµ¥Àý¶ÔÏóµÄʱ»ú£¬Ò»¶¨ÒªÔÚÕû¸öApp·¢ÆðÈκÎÍøÂçÇëÇóÖ®Ç°Ìæ»»¡£Ò»µ©AppÓÐÁËÍøÂçÇëÇóÐÐΪ£¬NSURLCacheµ¥Àý¶ÔÏó¾ÍÈ·¶¨ÁË£¬ÔÙÈ¥¸Ä±äÊÇÎÞЧµÄ¡£

»º´æ²ßÂÔ

WebµÄ´ó²¿·ÖÄÚÈÝÊǶà±äµÄ£¬¿ª·¢ÕßÐèÒª¸ù¾Ý¾ßÌåµÄÒµÎñÐèÇóÖÆ¶¨»º´æ²ßÂÔ¡£ºÃµÄ»º´æ²ßÂÔ¿ÉÒÔÔںܴó³Ì¶ÈÉÏÃÖ²¹WebÒ³´øÀ´µÄ¼ÓÔØÂýºÍÁ÷Á¿ºÄ·Ñ´óµÄÎÊÌâ¡£»º´æ²ßÂÔµÄÒ»°ã˼·ÊÇ£º

1.ÄÚÖÃͨÓõÄ×ÊÔ´ºÍ¹Ø¼üÒ³Ãæ£»

2.°´Ð軺´æ³£ÓÃÒ³Ãæ£»

3.Ϊ»º´æÉèÖð汾ºÅ£¬¸ù¾Ý°æ±¾ºÅ½øÐÐʹÓúÍÉý¼¶¡£

58 AppÖжÔһЩͨÓÃ×ÊÔ´ºÍÊ®·ÖÖØÒªµÄWebÒ³Ãæ½øÐÐÁËÄÚÖ㬷ÀÖ¹AppÔÚÊ×´ÎÆô¶¯Ê±ÓÉÓÚÍøÂçÔ­Òòµ¼ÖÂÄ³Ð©ÖØÒªÒ³ÃæÎÞ·¨Õ¹Ê¾¡£ÔÚ»º´æÊ¹ÓúÍÉý¼¶µÄ²ßÂÔÉÏ£¬58 App³ýÁËÉèÖð汾ºÅÒÔÍ⣬»¹Õë¶ÔÄÇЩÒѹýÆÚµ«»¹¿ÉÓõĻº´æÊý¾ÝÉèÖÃÁË»º´æ¹ýÆÚãÐÖµ¡£58 AppµÄÏêϸ»º´æ²ßÂÔÈçÏ£º

1.½«Í¨ÓÃHybrid×ÊÔ´£¨CSS¡¢JSÎļþµÈ£©ºÍ¹Ø¼üÒ³Ãæ£¨±ÈÈçÒµÎñÏß´óÀàÒ³£©¸½´ø°æ±¾ºÅÄÚÖõ½AppµÄÌØ¶¨BundleÖУ»

2.ÔÚNSURLCacheµ¥ÀýÖÐÀ¹½Øµ½ÇëÇóºó£¬ÅжϸÃÇëÇóÊÇ·ñ´øÓлº´æ°æ±¾ºÅÐÅÏ¢£¬Èç¹ûûÓУ¬ËµÃ÷¸ÃÒ³Ãæ²»Ê¹Óûº´æ£¬×ßÕý³£ÍøÂçÇëÇó£»

3.´Ó»º´æ¿âÖвéÕÒ»º´æÊý¾Ý£¬Èç¹ûÓÐÔòÈ¡³ö£¬·ñÔòµ½ÄÚÖÃ×ÊÔ´ÖÐÈ¡¡£Èç¹ûÁ½Õß¶¼Ã»ÓÐÊý¾Ý£¬×ßÕý³£ÍøÂçÇëÇó¡£²¢ÔÚÇëÇóÍê³Éºó£¬½«½á¹û±£´æµ½»º´æ¿âÖУ»

4.Äõ½»º´æ»òÄÚÖÃÊý¾Ýºó£¬½«ÇëÇóÖдøµÄ°æ±¾ºÅv1ÓëÈ¡µ½Êý¾ÝµÄ°æ±¾ºÅv2½øÐжԱȡ£Èç¹ûv1¡Üv2£¬·µ»ØÈ¡µ½µÄÊý¾Ý£¬²»ÔÙÇëÇóÍøÂ磻Èç¹ûv1£¾v2ÇÒv1 ¨C v2СÓÚ»º´æ¹ýÆÚãÐÖµ£¬ÔòÏÈ·µ»Ø»º´æÊý¾ÝÒÔ¹©Ê¹Óã¬È»ºóºǫ́ÇëÇóеÄÊý¾Ý²¢´æÈ뻺´æ£»Èç¹ûv1£¾v2ÇÒv1 ¨C v2´óÓÚ»º´æ¹ýÆÚãÐÖµ£¬×ßÕý³£ÍøÂçÇëÇ󣬲¢ÔÚÇëÇóÍê³Éºó£¬½«½á¹û±£´æµ½»º´æ¿âÖС£

»º´æ¿ò¼ÜÉè¼Æ

58 AppÖÐHybridµÄ»º´æ¿ò¼ÜÉè¼ÆÈçͼ3Ëùʾ£¬ÆäÖУº

ͼ3 Hybrid»º´æ¿ò¼ÜÉè¼Æ

1. HybridÄÚÖÃ×ÊÔ´¹ÜÀí

HybridÄÚÖÃ×ÊÔ´¹ÜÀíÄ£¿éÊǵ¥¶ÀΪHybridµÄÄÚÖÃ×ÊÔ´¶ø´´½¨µÄ¡£HybridÄÚÖÃ×ÊÔ´µ¥¶À´æ·ÅÔÚÒ»¸öBundleÏ£¬ÕâЩÄÚÖÃ×ÊÔ´Ö÷Òª°üÀ¨HTMLÎļþ¡¢JavaScriptÎļþ¡¢CSSÎļþºÍͼƬ¡£HybridÄÚÖÃ×ÊÔ´¹ÜÀíÄ£¿é¸ºÔð½â¶ÁÕâ¸öBundle£¬²¢ÏòÉÏÌṩ¶ÁÈ¡ÄÚÖÃ×ÊÔ´µÄ½Ó¿Ú£¬¸Ã½Ó¿ÚÒÔ×ÊÔ´µÄURLºÍ°æ±¾ºÅΪ²ÎÊý£¬°´Õչ̶¨µÄ¹æÔò½øÐÐת»»£¬²éÕÒ¿ÉÓõÄÄÚÖÃ×ÊÔ´¡£

ÄÚÖÃ×ÊÔ´ÖгýÁËÕâЩWeb×ÊÔ´Í⣬»¹µ¥¶ÀÄÚÖÃÁËÒ»·ÝÎļþ£¬ÓÃÓÚ±£´æURLµ½ÄÚÖÃ×ÊÔ´ÎļþÃûºÍÄÚÖÃ×ÊÔ´°æ±¾ºÅµÄÓ³Éä±í¡£¹ÜÀíÄ£¿éÔÚÊÕµ½ÄÚÖÃ×ÊÔ´ÇëÇóºó£¬ÏÈÓÃURLµ½Õâ¸öÓ³Éä±íÖвéÕÒÄÚÖÃ×ÊÔ´°æ±¾ºÅ£¬±È¶Ô°æ±¾ºÅ£¬È»ºóÔÙͨ¹ýÓ³Éä±íÖв鵽µÄÎļþÃû¶ÁÈ¡ÏàÓ¦µÄÄÚÖÃ×ÊÔ´²¢·µ»Ø¡£

2. App»º´æ¿â

58 AppÄÚÓÐÒ»¸ö¶ÀÁ¢µÄ»º´æ¿â×é¼þ£¬AppÖÐÐèÒªÓõ½µÄ»º´æÐÔÖʵÄÊý¾Ý¶¼´æ·ÅÔÚÕâ¸ö¿âÖУ¬±ãÓÚ»º´æµÄͳһ¹ÜÀí¡£»º´æ¿âÄڵĻº´æÊý¾ÝÒ²Óа汾ºÅµÄ¸ÅÄÍêÈ«¿ÉÒÔÂú×ãHybrid»º´æµÄÐèÇó£¬ÇÒʹÓÃÊ®·Ö·½±ã¡£HybridµÄ»º´æÊý¾Ý¶¼Ê¹ÓÃAppµÄ»º´æ¿âÀ´±£´æ¡£

3. Hybrid»º´æ¹ÜÀíÆ÷

Hybrid»º´æ¹ÜÀíÆ÷ÊÇHybrid»º´æÏà¹Ø¹¦ÄܵÄ×ÜÈë¿Ú£¬¸ºÔðÌṩHybrid»º´æÊý¾ÝºÍÉý¼¶»º´æÊý¾Ý£¬ËùÓеÄHybrid»º´æÏà¹ØµÄ²ßÂÔ¶¼·â×°ÔÚÕâ¸öÄ£¿éÖС£È«¾ÖµÄNSURLCacheʵÀýÔÚÊÕµ½HybridÇëÇóʱ»áµ÷ÆðHybrid»º´æ¹ÜÀíÆ÷£¬Ë÷È¡»º´æÊý¾Ý¡£Hybrid»º´æ¹ÜÀíÆ÷Ïȵ½AppµÄ»º´æ¿âÖвéÕÒ¿ÉÓõĻº´æ£¬Èç¹ûûÓÐÔÙµ½ÄÚÖÃ×ÊÔ´¹ÜÀíÄ£¿é²éÕÒ£¬Èç¹û¿ÉÒԲ鵽Êý¾Ý£¬Ôò·µ»Ø²éµ½µÄÊý¾Ý£¬Èç¹û²é²»µ½£¬Ôò·µ»Ø¿Õ¡£ÔÚNSURLCacheµÄstoreCachedResponse:forRequest:·½·¨ÖУ¬»áµ÷ÓÃHybrid»º´æ¹ÜÀíÆ÷µÄ»º´æÉý¼¶½Ó¿Ú£¬½«ÇëÇóµ½µÄÊý¾Ý´«Èë¸Ã½Ó¿Ú¡£ÐÂÇëÇóµ½µÄÊý¾Ý»á´øÓÐ×îеİ汾ºÅÐÅÏ¢¡£»º´æÉý¼¶½Ó¿Ú½«ÐµÄÊý¾ÝºÍ°æ±¾ºÅÐÅϢһͬ´æÈ뻺´æ¿âÖУ¬ÒÔ±ãÏ´ÎʹÓá£

ÐÔÄÜ

Ç°Ãæ·ÖÏíÁË58 AppÖÐHybridµÄͨѶ¿ò¼ÜºÍ»º´æ¿ò¼Ü£¬½ÓÏÂÀ´½éÉÜÒ»ÏÂÓöµ½µÄÐÔÄÜ·½ÃæµÄÎÊÌâ¼°½â¾ö·½°¸¡£

AJAXͨѶ·½Ê½µÄÄÚ´æÐ¹Â¶ÎÊÌâ

Ç°Ãæ½éÉܹýÔÚUIWebViewÖÐʹÓÃAJAXµÄ·½Ê½½øÐÐNative¹¦Äܵ÷Ó㬻á²úÉúÄÚ´æÐ¹Â¶ÎÊÌ⣬¡¶UIWebView Secrets - Part1 - Memory Leaks on Xmlhttprequest¡·£¨²Î¿¼×ÊÁÏ1£©Öиø³öÁËÒ»¸ö½â¾ö·½°¸£¬ÊÇÔÚUIWebViewµÄ´úÀí·½·¨WebViewDidFinishLoad:ÖÐÌí¼ÓÈçÏ´úÂ룺

[[NSUserDefaults standardUserDefaults] setInteger:0 forKey:@"WebKitCacheModelPreferenceKey"];

²âÊÔ½á¹ûÏÔʾ£¬ÕâÖÖ·½·¨²¢Ã»ÓÐʹÓÃiframeµÄЧ¹ûºÃ¡£¼ÓÉÏÀ¹½Ø·½Ê½µÄ¾ÖÏÞÐÔ£¬58 App×îÖÕÑ¡ÔñµÄ½â¾ö·½°¸ÊÇʹÓÃiframe´úÌæAJAX¡£

UIWebViewÄÚ´æÎÊÌâ

ʹÓùýUIWebViewµÄ¿ª·¢ÕßÓ¦¸Ã¶¼ÖªµÀ£¬UIWebViewÓбȽÏÑÏÖØµÄÄÚ´æÎÊÌ⡣ƻ¹ûÔÚiOS8ÍÆ³öÁËWebKit¿ò¼Ü£¬ÆäºËÐÄÊÇWKWebView£¬Ö¾ÔÚÈ¡´úUIWebView¡£WKWebView²»½ö½â¾öÁËUIWebViewµÄÄÚ´æÎÊÌ⣬ÇÒ¾ßÓиü¸ßµÄÎȶ¨ÐÔºÍÏìÓ¦ËÙ¶È£¬»¹Ö§³ÖһЩÐµĹ¦ÄÜ¡£Ê¹ÓÃWKWebView´úÌæUIWebView¶ÔÌáÉýÕû¸öHybrid¿ò¼ÜµÄÐÔÄÜ»áÓкÜÖØ´óµÄÒâÒå¡£

µ«ÊÇ£¬WKWebViewÒ»Ö±´æÔÚÒ»¸öÎÊÌ⣬¾ÍÊÇWKWebView·¢³öµÄÇëÇó²¢²»×ßNSURLCacheµÄ·½·¨¡£Õâ¾Íµ¼ÖÂÎÒÃÇ×Ô¶¨ÒåµÄ»º´æÏµÍ³»áÕû¸öʧЧ£¬Ò²ÎÞ·¨ÔÙÓÃÄÚÖÃ×ÊÔ´¡£¾­¹ýÒ»¶Îʱ¼äµÄÃþË÷ºÍµ÷ÑУ¬ÖÕÓÚÕÒµ½ÁË¿ÉÒÔʵÏÖ×Ô¶¨Ò建´æµÄ·½·¨¡£Ö÷Ҫ˼ÏëÊÇWKWebView·¢ÆðµÄÇëÇó¿ÉÒÔͨ¹ýNSURLProtocolÀ´À¹½Ø¡ª¡ª½«×Ô¶¨ÒåµÄNSURLProtocol×ÓÀà×¢²áµ½NSURLProtocolµÄ·½Ê½£¬¿ÉÒÔÏñ֮ǰÓÃNSURLCacheÒ»ÑùʹÓûº´æ»òÄÚÖÃÊý¾Ý´úÌæÇëÇó½á¹û·µ»Ø¡£×¢²á×Ô¶¨ÒåNSURLProtocolµÄ¹Ø¼ü´úÂëÈçÏ£º

[NSURLProtocol registerClass:WBCustomProtocol.class];
Class cls = NSClassFromString(@"WKBrowsing

ContextController");
SEL sel = NSSelectorFromString(@"registerSchemeFo

rCustomProtocol:");
if ([(id)cls respondsToSelector:sel]) {
[(id)cls performSelector:sel withObject:@"http"];

´úÂëÖдӵڶþÐпªÊ¼£¬ÊÇΪÁËÈÃWKWebView·¢ÆðµÄÇëÇó¿ÉÒÔ±»×Ô¶¨ÒåµÄNSURLProtocol¶ÔÏóÀ¹½Ø¶øÌí¼ÓµÄ¡£Ìí¼ÓÁËÉÏÃæµÄ´úÂëºó£¬¾Í¿ÉÒÔÔÚ×Ô¶¨ÒåµÄNSURLProtocol×ÓÀàµÄ·½·¨Öнػñµ½WKWebViewµÄÇëÇóºÍÊý¾ÝÏÂÔØÍê³ÉµÄʼþ¡£

ÒÔÉÏ·½°¸½â¾öÁËWKWebViewÎÞ·¨Ê¹ÓÃ×Ô¶¨Ò建´æµÄÎÊÌ⣬µ«ÊÇÕâÖÖ·½°¸»¹´æÔÚһЩÎÊÌ⣬ÇÒʹÓÃÁËÆ»¹ûϵͳµÄ˽ÓÐAPI£¬²»·ûºÏ¹Ù·½¹æ¶¨£¬ÔÚAppÖÐÖ±½ÓʹÓÃÓб»¾ÜµÄ·çÏÕ¡£ÁíÍâWKWebView»¹ÓÐһЩÆäËûÎÊÌ⣨ÏêÇé¿É²Î¼û²Î¿¼×ÊÔ´6£©¡£

Ŀǰ£¬58 AppÕýÔÚ×¼±¸½ÓÈëWKWebView£¬µ«ÊÇûÓоö¶¨Ê¹ÓÃÕâÖÖ·½°¸À´½â¾ö×Ô¶¨Ò建´æÎÊÌâ¡£ÎÒÃÇÕýÔÚÖð²½¼õÉÙ¶Ô×Ô¶¨Ò建´æµÄÒÀÀµ³Ì¶È£¬ÔÚÇ°Ãæ¼¸¸ö°æ±¾µü´úÖУ¬ÒѾ­Öð²½È¥³ýÁËÄÚÖõÄHTMLÒ³Ãæ¡£

Ò³Ãæ¼ÓÔØÍê³ÉʼþÓÅ»¯

Õý³£µÄWebÒ³Ãæ¼ÓÔØÊDZȽϺÄʱµÄ£¬ÓÈÆäÊÇÔÚÍøÂç»·¾³½Ï²îµÄÇé¿öÏ¡£¶øWebµÄÒ³ÃæÎļþÓëÑùʽ±í¡¢JavaScriptÎļþÒÔ¼°Í¼Æ¬ÊÇ·Ö±ð¼ÓÔØµÄ£¬ºÜÓпÉÄܽçÃæÔªËØÒѾ­äÖȾÍê³É£¬µ«Ñùʽ±í»òJavaScriptÎļþ»¹Ã»ÓмÓÔØÍ꣬Õâʱ»á³öÏÖ²¼¾Ö»ìÂÒºÍʼþ²»ÏìÓ¦µÄÇé¿ö£¬Ó°ÏìÓû§ÌåÑ顣ΪÁ˲»ÈÃÓû§¿´µ½ÕâÖÖÇé¿ö£¬Ò»°ãNative»áÔÚ¼ÓÔØWeb×ÊÔ´µÄ¹ý³ÌÖÐÒþ²ØµôWeb View£¬»òÓÃLoadingÊÓͼÕÚµ²×¡Web View¡£µÈµ½Web×ÊÔ´¼ÓÔØÍê³ÉÔÙ½«Web Viewչʾ¸øÓû§¡£ÏµÍ³Í¨¹ýUIWebViewDelegateµÄWebViewDidFinishLoad:·½·¨¸æÖªNative×ÊÔ´¼ÓÔØÍê³ÉµÄʼþ¡£Õâ¸ö·½·¨ÔÚÒ³ÃæÓõ½µÄËùÓÐ×ÊÔ´ÎļþÈ«²¿¼ÓÔØÍê³Éºó´¥·¢¡£

ÔÚʵÓÃÖз¢ÏÖ£¬Ò»°ãÇé¿öÏÂÑùʽ±í×ÊÔ´ºÍJavaScript×ÊÔ´µÄ¼ÓÔØËٶȺܿ죬±È½ÏºÄʱµÄÊÇͼƬ×ÊÔ´£¨ÊÂʵÊÇNative½çÃæÒ²´æÔÚͼƬ¼ÓÔØ±È½ÏÂýµÄÇé¿ö£¬Ò»°ãNative»á²ÉÓÃÒì²½¼ÓÔØÍ¼Æ¬µÄ²ßÂÔ£¬¼´ÏȽ«½çÃæÕ¹Ê¾¸øÓû§£¬ºǫ́ÏÂÔØÍ¼Æ¬£¬ÏÂÔØÍê³ÉºóÔÙË¢ÐÂͼƬ¿Ø¼þ£©¡£Êµ¼ÊÉϵ±HTML¡¢Ñùʽ±íºÍJavaScriptÎļþ¼ÓÔØÍê³Éºó£¬Õû¸ö½çÃæ¾ÍÍêÈ«¿ÉÒÔչʾ¸øÓû§²¢ÔÊÐíÓû§½»»¥ÁË¡£Í¼Æ¬×ÊÔ´¼ÓÔØÍê³ÉÓë·ñ²¢²»Ó°Ïì½»»¥¡£

ÇÒÕâÑùµÄÂß¼­Ò²ÓëNativeÒì²½¼ÓÔØÍ¼Æ¬µÄÌåÑéÒ»Ö¡£ÔÚWebViewDidFinishLoad:·½·¨ÖвÅչʾ½çÃæµÄ²ßÂÔ»áÑÓ³¤¼ÓÔØÊ±¼ä£¬ÓÈÆäÔÚͼƬºÜ´ó»òÍøÂç»·¾³½Ï²îµÄÇé¿öÏ£¬Óû§¿ÉÄÜÐèÒª¶àµÈ´ý¼¸±¶µÄʱ¼ä¡£

»ùÓÚÒÔÉϵĿ¼ÂÇ£¬58 AppµÄHybrid¿ò¼ÜרÃÅΪWebÌṩÁËÒ»¹¦Äܽӿڣ¬ÔÊÐíWebÌáǰ֪ͨNativeչʾ½çÃæ¡£¸Ã¹¦ÄÜʵÏÖÆðÀ´ºÜ¼òµ¥£¬Ö»Ðèµ¥¶À¶¨ÒåÒ»¸öHybridͨѶЭÒ飬²¢ÔÚNative¶ËÏàÓ¦µÄ´¦ÀíÂß¼­¼´¿É¡£Ç°¶ËÔÚ¿ª·¢Ò»Ð©Í¼Æ¬×ÊÔ´±È½Ï¶àµÄÒ³ÃæÊ±£¬Ìáǰµ÷Óøýӿڣ¬¿ÉÒÔÔںܴó³Ì¶ÈÉÏÌáÉýÓû§ÌåÑé¡£

ñîºÏ

58 App×î³õÒýÈëHybridµÄʱºò£¬ÒµÎñÒª¼òµ¥Ðí¶à£¬NativeûÓÐÏÖÔÚÕâô¶à¹¦Äܿɹ©Webµ÷Óã¬ËùÒÔ×ʼÉè¼ÆµÄHybridͨѶ¿ò¼ÜÒ²±È½Ï¼òµ¥¡£ÓÉÓÚʹÓÃAJAXµÄ·½Ê½½øÐÐͨѶ£¬Í¨Ñ¶ÇëÇóµÄÀ¹½ØÒ²ÒªÔÚNSURLCacheÖС£µ±Ê±Ò²Ã»Óй«ÓõĻº´æ¿â×é¼þ£¬HybridµÄ»º´æ¹¦ÄÜÓëÄÚÖÃ×ÊÔ´Ò»ÆðдÔÚµ¥¶ÀµÄÄ£¿éÖУ¨×î³õµÄHybrid¿ò¼ÜÈçͼ4Ëùʾ£©¡£

ͼ4 ¾É°æHybrid¿ò¼ÜÉè¼ÆÍ¼

Õâ¸ö¿ò¼ÜÔÚ58 AppÖдæÔÚÁ˺ܳ¤Ò»¶Îʱ¼ä£¬ÔËÐбȽÏÎȶ¨¡£µ«ÊÇËæ×ÅÒµÎñµÄ²»¶ÏÔö¼Ó£¬Õâ¸ö¿ò¼Ü±©Â¶³öÁËһЩ±È½ÏÑÏÖØµÄÎÊÌâ¡£

×Ô¶¨ÒåµÄNSURLCacheÀàÖÐñîºÏÁËHybridµÄÒµÎñÂß¼­

ÓÉÓÚAJAX·½Ê½µÄͨѶÇëÇóÒªÔÚNSURLCacheÖнøÐÐÀ¹½Ø£¬NSURLCacheÔÚÊÕµ½ÇëÇóºó£¬²»µÃ²»ÏÈÅжÏÊÇ·ñÊÇHybridͨѶÇëÇ󡪡ªÈç¹ûÊÇ£¬ÔòÐèÒª½«ÇëÇóת·¢¸øHybridͨѶ¿ò¼Ü´¦Àí¡£ÁíÍ⣬ΪÁ˽â¾öNative»Øµ÷WebʱÎÞ·¨È·¶¨Web ViewµÄÎÊÌ⣬ÐèҪά»¤Ò»¸öWeb ViewµÄWeb ViewÕ»£¬AppÄÚËùÓеÄWeb View¶ÔÏó¶¼ÐèÒª´æÈëµ½Õâ¸öÕ»ÖС£Õâ¸öÕ»ÐèҪȫ¾Ö´æ·Å£¬µ«ÊÇWebÔØÌåÒ³ºÍHybridʼþ·Ö·¢Æ÷¶¼ÊǾֲ¿¶ÔÏó£¬ÎÞ·¨±£´æÕâ¸öÕ»¡£¿¼Âǵ½NSURLCache¶ÔÏóÓëHybridÓйØÁªÇÒÊǵ¥Àý£¬×îÖÕ½«Õâ¸öÕ»±£´æÔÚÁËNSURLCacheµÄÊôÐÔÖУ¬¸ü¼ÓÖØÁËNSURLCacheÓëHybridµÄñîºÏ¡£

NSURLCacheñîºÏHybridÒµÎñÂß¼­µÄÎÊÌâËæ×ÅiframeµÄÒýÈëÓ­Èжø½â£¬Í¨Ñ¶ÇëÇóµÄÀ¹½ØÖ±½Ó×ªÒÆµ½ÁËHybridʼþ·Ö·¢Æ÷ÖС£

NSURLCacheµÄÖ°ÔðÖØÐ»ָ´µ¥Ò»£¬Ö»¸ºÔ𻺴æÏà¹ØµÄÄÚÈÝ¡£Ê¹ÓÃiframeµÄͨѶ·½Ê½£¬WebÔÚµ÷ÓÃNative¹¦ÄܵÄÇëÇóÊÇÔÚUIWebViewµÄ´úÀí·½·¨Öнػñ£¬ÏµÍ³»á½«ÏàÓ¦µÄWeb viewͨ¹ý²ÎÊý´«µÝ¹ýÀ´£¬²»ÔÙÓÐÎÞ·¨È·¶¨Web viewµÄÎÊÌ⣬֮ǰµÄWeb viewջҲûÓбØÒªÔÙά»¤ÁË¡£iframeµÄÒýÈëʹµÃHybridµÄͨѶ¿ò¼ÜºÍ»º´æ¿ò¼ÜÍêÈ«·ÖÀ뿪À´£¬»¥²»¸ÉÉæ¡£

WebÔØÌåÒ³Ó·Ö×

×î³õµÄHybrid¿ò¼ÜÖУ¬action´¦ÀíµÄ¾ßÌåʵÏÖдÔÚÁËWebÔØÌåÒ³ÖУ¬Õâµ¼ÖÂWebÔØÌåÒ³Ëæ×ÅÒµÎñµÄÔö¼Ó±äµÃÊ®·ÖÓ·Ö×£¬ÄÚ²¿°üº¬´óÁ¿µÄaction´¦Àí´úÂë¡£ÁíÍ⣬ÓÉÓÚһЩΪWebÌṩµÄ¹¦ÄÜÊÇÕë¶ÔÄ³Ð©ÌØ¶¨ÒµÎñ³¡¾°µÄ£¬Ð´ÔÚ¹«ÓÃÔØÌåÒ³Öв¢²»ºÏÊÊ£¬ËùÒÔ¿ªÊ¼ÁËʹÓü̳еķ½Ê½ÅÉÉú³ö¸÷ÖÖ¸÷ÑùµÄWebÔØÌåÒ³£¬×îÖÕµ¼ÖÂAppÄÚµÄView ControllerµÄ¼Ì³Ð¹ØÏµÊ®·Ö»ìÂÒ£¬¼Ì³Ð²ã´Î×î¶àʱ¸ß´ï¾Å²ã¡£

WebÔØÌåÒ³ñîºÏaction´¦ÀíµÄÎÊÌâÊÇÒµÎñÖð²½ÀÛ»ýµÄ½á¹û£¬µ±¾ö¶¨ÒªÖع¹µÄʱºò£¬ÕâÀïµÄÂß¼­ÒѾ­±äµÃÊ®·ÖÅÓÔÓ¡£Ç¿Ðн«ÕâÁ½²¿·Ö°þÀëÀ§ÄѺܴó£¬Ò»·½Ãæ´úÂëÌ«¶à£¬¹¤×÷Á¿´ó£¬ÁíÒ»·½ÃæÂß¼­¹ýÓÚ¸´ÔÓ£¬ÉÔÓв»É÷¾Í»áÒýÆðBug¡£½â¾öWebÔØÌåÒ³µÄÎÊÌâ²ÉÈ¡µÄ·½°¸·Ö³ÉÁ½²¿·Ö¡£

´î½¨ÐÂHybrid¿ò¼Ü£¬Öð²½ÌÔÌ­ÀϵĿò¼Ü¡£

ΪÁ˽â¾öWebÔØÌåÒ³Ó·Ö×µÄÎÊÌ⣬¸üΪÁËÌṩ¶ÔiOS 8 WebKit¿ò¼ÜµÄÖ§³Ö£¬ÌáÉýHybridÐÔÄÜ£¬58 iOS¿Í»§¶ËÖØÐ´ÁËÒ»Ì×еÄHybrid¿ò¼Ü¡£ÐÂHybrid¿ò¼ÜÑϸñ°´ÕÕͼ2ËùʾµÄ½á¹¹½øÐÐʵÏÖ¡£ÐÂÔöµÄÒµÎñʹÓÃеÄHybrid¿ò¼Ü£¬²¢Öð²½½«ÀϵÄÒµÎñÇл»µ½ÐµĿò¼ÜÉÏÀ´¡£

ÔÚͼ2µÄ¿ò¼ÜÖУ¬ÎªÁËÔÚÔö¼ÓеÄHybrid¹¦ÄÜ×é¼þʱÕûÌå¿ò¼ÜÂú×㿪±ÕÔ­Ôò£¬ÐèÒª½â³ýHybrid´¦ÀíÒýÇæ¶ÔHybrid¹¦ÄÜ×é¼þµÄÒÀÀµ¡£ÕâÀï²ÉÓõÄÉè¼ÆÊÇ£¬´¦ÀíÒýÇæ²»Ö÷¶¯Ìí¼Ó×é¼þ£¬¶øÊÇÌṩȫ¾ÖµÄ×¢²á½Ó¿Ú£¬ÄÚ²¿±£´æÒ»·Ý¹²ÏíµÄ×¢²á±í¡£¸÷¸ö¹¦ÄÜ×é¼þÔÚload·½·¨ÖÐÖ÷¶¯Ïò´¦ÀíÒýÇæÖÐ×¢²áactionÃû³Æ¡¢¹¦ÄÜ×é¼þµÄÀàÃû¼°·½·¨¡£´¦ÀíÒýÇæÔÚÔËÐÐʱ¶¯Ì¬µØ²éÔÄ×¢²á±í£¬ÕÒµ½action¶ÔÓ¦µÄÀàÃûºÍ·½·¨£¬Éú³É¹¦ÄÜ×é¼þµÄʵÀý£¬²¢µ÷ÓÃÏàÓ¦µÄ´¦Àí·½·¨¡£

°´ÕÕÉÏÃæµÄÉè¼Æ£¬Ò»¸öWeb½çÃæµÄÍêÕûÔËÐÐÁ÷³ÌΪ£º

1.³ÌÐò¿ªÊ¼ÔËÐУ¬Éú³ÉÈ«¾ÖµÄHybrid¹²Ïí×¢²á±í£¨actionÃû³Æµ½ÀàÃû¼°·½·¨ÃûµÄÓ³É䣩£¬¸÷¸öHybrid¹¦ÄÜ×é¼þÏò×¢²á±íÖÐ×¢²áactionÃû³Æ£»

2.ÐèҪʹÓÃWebÒ³£¬Ó¦ÓóÌÐòÉú³ÉWebÔØÌåÒ³£»

3.WebÔØÌåÒ³Éú³ÉWeb ViewʵÀýºÍHybrid´¦ÀíÒýÇæÊµÀý£¬²¢Ç¿³ÖÓÐÕâÁ½¸öʵÀý£¬½«´¦ÀíÒýÇæÊµÀýÉèΪWeb viewʵÀýµÄ´úÀí¶ÔÏ󣬽«×ÔÉíÉèΪ´¦ÀíÒýÇæµÄ´úÀí¶ÔÏó£»

4.WebÒ³·¢ÆðNativeµ÷ÓÃÇëÇó£»

5.´¦ÀíÒýÇæÊµÀý½Ø»ñNativeµ÷ÓÃÇëÇ󣬲¢ÔÚ¹²Ïí×¢²á±íÖв鵽¿ÉÒÔ´¦Àí±¾´ÎÇëÇóµÄÀàÃûºÍ·½·¨Ãû£»

6.´¦ÀíÒýÇæÉú³É²éÕÒµ½µÄHybrid¹¦ÄÜ×é¼þÀàµÄʵÀý£¬Ç¿³ÖÓÐÖ®£¬²¢½«×ÔÉíµÄ´úÀí¶ÔÏóÉèΪ¹¦ÄÜ×é¼þµÄ´úÀí¶ÔÏ󣬵÷ÓøÃʵÀýµÄ´¦Àí·½·¨£»

7.Hybrid¹¦ÄÜ×é¼þ½âÎöÈ«²¿µÄµ÷ÓòÎÊý£¬´¦ÀíÇëÇ󣬲¢Í¨¹ý´úÀí¶ÔÏ󽫴¦Àí½á¹û»Øµ÷¸øWebÒ³¡£

8.WebÒ³ÉúÃüÖÜÆÚÍê³É£¬ÊÍ·ÅWeb ViewʵÀý¡¢Hybrid´¦ÀíÒýÇæÊµÀý¡¢HybridÒýÇæÊµÀýÊÍ·ÅËùÓеÄHybrid¹¦ÄÜ×é¼þʵÀý¡£

ͨ¹ýʹÓÃ×é¼þÖ÷¶¯×¢²áºÍÔËÐÐʱ¶¯Ì¬²éÕҵķ½Ê½£¬¹Ì»¯ÁËÐÂÔö×é¼þµÄÁ÷³Ì£¬±£Ö¤ÒÑÓдúÂëµÄÍ걸ÐÔ£¬Ê¹Hybrid¿ò¼ÜÔÚÔö¼ÓÐµĹ¦ÄÜÉÏÑϸñ×ñÊØ¿ª±ÕÔ­Ôò¡£

¹ØÓÚ×¢²á±í£¬Ä¿Ç°ÊDzÉÓÃÈ«¾Ö¹²ÏíµÄ·½Ê½±£´æ¡£ÔÚ×î³õÉè¼ÆÊ±£¬»¹ÓÐÁíÒ»ÖÖ¶¯Ì¬×éºÏ×¢²áµÄ·½°¸¡£¸Ã·½°¸²»Ê¹Óù²ÏíµÄ×¢²á±í£¬¶øÊÇÿһ¸öHybrid´¦ÀíÒýÇæ±£´æÒ»·Ý¶ÀÁ¢µÄ×¢²á±í£¬ÔÚWebÔØÌåÒ³Éú³ÉHybrid´¦ÀíÒýÇæµÄʱºò£¬¸ù¾ÝÒµÎñ³¡¾°Ñ¡Ôñ²¿·ÖHybrid¹¦ÄÜ×é¼þ×¢²áµ½´¦ÀíÒýÇæÖС£ÕâÖÖ¶¯Ì¬×éºÏµÄ·½°¸¶Ô¹¦ÄÜ×é¼þµÄ×éºÏ½øÐÐÁËϸ»¯£¬Ã¿¸öWebÔØÌåÒ³¶ÔÏó¸ù¾Ý¸÷×ÔµÄÒµÎñ³¡¾°°´Ðè×¢²á×é¼þ¡£¶¯Ì¬×éºÏ×¢²áµÄ·½°¸¿¼ÂǵÄÖ÷ÒªÎÊÌâÊÇ£ºÔÚHybrid¿ò¼ÜÖУ¬ÓÐÐí¶àרÓÃHybrid¹¦ÄÜ×é¼þ£¬´ó²¿·ÖWebÒ³²¢²»ÐèҪʹÓÃÕâЩ×é¼þ£¬ÁíÍâ58 App±»²ð·ÖΪÖ÷AppºÍ¶à¸öÒµÎñÏß¹²Í¬Î¬»¤ºÍ¿ª·¢£¬ÓÐһЩHybrid¹¦ÄÜ×é¼þÊÇÒµÎñÏß¶ÀÓе쬯äËûÒµÎñÏß²¢²»ÐèҪʹÓ᣶¯Ì¬×éºÏ×¢²áµÄ·½°¸¿ÉÒÔ´ïµ½¸ôÀëÒµÎñÏßµÄÄ¿µÄ£¬Í¬Ê±²»Ê¹ÓÃÈ«¾Ö×¢²á±í£¬ÔÚ²»Ê¹ÓÃWebҳʱ²»Õ¼ÓÃÄÚ´æ×ÊÔ´£¬Ò²¼õСÁ˵¥ÕÅ×¢²á±íµÄ´óС¡£

ÏÖÔÚµÄHybrid¿ò¼Ü²ÉÓÃÈ«¾Ö×¢²á·½°¸£¬¶øÃ»ÓвÉÓö¯Ì¬×éºÏ×¢²áµÄ·½°¸£¬Ô­ÒòÊǶ¯Ì¬×éºÏ×¢²á·½°¸ÐèÒªÔÚÉú³ÉWebÔØÌåÒ³Ê±Çø·ÖÒµÎñ³¡¾°£¬WebÒ³µÄʹÓ÷½±ØÐëÌṩÐèҪע²áµÄ×é¼þÐÅÏ¢£¬¶øÕâÊDZȽÏÀ§Äѵģ¬Ò²¼Ó´óÁ˵÷Ó÷½µ÷ÓÃWebÒ³µÄ¸´Ôӳ̶ȡ£ÁíÍ⣬´ó²¿·Ö×é¼þÊÇ·ñ»á±»Ê¹Óö¼ÊÇ´¦ÓÚÄ£ºý״̬£¬²¢²»Äܱ£Ö¤Ê¹ÓûòÕß²»Ê¹Óã¬ÕâÖÖÄ£ºýÐÔÔ½´ó£¬Ê¹Óö¯Ì¬×éºÏ×¢²á·½°¸µÄÒâÒåÒ²¾ÍԽС¡£

×îÖÕ58 App²ÉÓÃÁËÈ«¾Ö×¢²áµÄ·½°¸£¬ËäÈ»×¢²á±íÌå»ý½Ï´ó£¬µ«ÊÇÓÉÓÚʹÓÃÉ¢ÁÐËã·¨£¬²¢²»»áÔö¼Ó²éÕҵĸ´ÔӶȶøÓ°ÏìÐÔÄÜ£¬Í¬Ê±±ÜÃâÁ˵÷Ó÷½Ðè񻂿·ÖÒµÎñ³¡¾°µÄ²»±ã£¬¼ò»¯Á˺óÐøµÄ¿ª·¢³É±¾¡£

¸ÄÔìÔ­Hybrid¿ò¼Ü£¬·ÀÖ¹WebÔØÌåÒ³½øÒ»²½À©´ó

ΪÁ˱£Ö¤ÒµÎñÂß¼­µÄÎȶ¨£¬²»ÄÜÖ±½ÓÌÔÌ­ÀϵÄHybrid¿ò¼Ü£¬ÀÏÒµÎñÖлáÓÐÒ»²¿·ÖеÄÐèÇóÐèÒªÔÚÀϵĿò¼ÜÉϼÌÐøÀ©Õ¹¡£ÎªÁË·ÀÖ¹ÀϵÄWebÔØÌåÒ³ÒòΪÕâЩÐÂÐèÇó½øÒ»²½À©´ó£¬¾ö¶¨½«Ô­HybridͨѶ¿ò¼Ü¸ÄװΪ˫ÏòÖ§³ÖµÄ½á¹¹¡£ÔÚ±£³ÖÔ­Web¹¦Äܽӿڴ¦ÀíÂß¼­²»±äµÄÇé¿öÏ£¬Ö§³ÖÒÔ×é¼þµÄ·½Ê½ÐÂÔöWeb¹¦Äܽӿڡ£¾ßÌåµÄʵÏÖÊÇÔÚHybridʼþ·Ö·¢Æ÷ÖÐÒ²Ìí¼ÓÁËÓëÐÂHybrid¿ò¼ÜµÄ´¦ÀíÒýÇæÏàËÆµÄÂß¼­£¬Ôö¼ÓÁËÈ«¾Ö¹²Ïí×¢²á±í£¬Ö§³Ö×é¼þÏòÆäÖÐ×¢²á¡£ÔÚ·Ö·¢´¦ÀíÖÐÌí¼ÓÁ˲éÕҺ͵÷ÓÃ×¢²á×é¼þµÄÂß¼­¡£¸ÄÔìºóµÄHybridʼþ·Ö·¢Æ÷ÔÚÊÕµ½actionÇëÇóºó£¬ÏȰ´ÀϵÄÂß¼­½øÐзַ¢£¬Èç¹û·Ö·¢³É¹¦Ôòµ÷ÓÃÔØÌåÒ³µÄ´¦ÀíÂß¼­£¬Èç¹û·Ö·¢Ê§°Ü£¬Ôò²éÕÒ¹²Ïí×¢²á±í£¬ÕÒµ½¿ÉÒÔ´¦Àí¸ÃactionµÄ×é¼þ½øÐÐʵÀý»¯£¬²¢µ÷ÓÃÏàÓ¦µÄ´¦ÀíÂß¼­¡£

ËäÈ»WebÔØÌåÒ³ÓÉÓڼ̳еĹØÏµ±äµÃºÜ·ÖÉ¢£¬µ«ÊÇʼþ·Ö·¢Æ÷Ò»Ö±Ö»ÓÐÒ»·Ý£¬Âß¼­±È½Ï¼¯ÖС£½øÁËÕâÑùµÄ¸ÄÔìºó£¬ÓÐЧ¶óÖÆÁËWebÔØÌåµÄ½øÒ»²½À©´ó£¬Ò²²»ÔÙÐèҪʹÓü̳ÐÀ´¸´ÓÃaction´¦ÀíÂß¼­ÁË¡£

×ܽá

±¾ÎÄÖØµã½éÉÜÁË58 AppÖÐHybrid¿ò¼ÜÔÚÉè¼ÆºÍ·¢Õ¹¹ý³ÌÖÐÓöµ½µÄÎÊÌâ¼°²ÉÓõĽâ¾ö·½°¸¡£Ä¿Ç°µÄHybrid¿ò¼ÜÊÇÒ»¸ö±È½Ï¼òµ¥ÊµÓõĿò¼Ü£¬Ç°¶ËûÓжÔNativeÌṩµÄ¹¦ÄܽøÐÐÒ»Ò»·â×°£¬ÕâÑù¿ÉÒÔÔÚÀ©Õ¹ÐÂactionЭÒéʱ¾¡Á¿Éٵظ͝´úÂë¡£ÇÒ·â×°²ã´ÎÉÙ£¬Ö´ÐÐЧÂʱȽϸߡ£Ä¿Ç°µÄHybrid¿ò¼ÜÒÀÈ»ºÜÓѺõØÖ§³Å×Å58ÒµÎñµÄ·¢Õ¹£¬ËùÒÔÔÝʱ»¹Ã»ÒýÈëJavaScriptCore.framework¡£ÔÚδÀ´µÄ·¢Õ¹ÖУ¬»áÖð²½ÒýÈëм¼Êõ£¬´î½¨¸üºÃµÄHybrid¡£

   
3232 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

ÊÖ»úÈí¼þ²âÊÔÓÃÀýÉè¼ÆÊµ¼ù
ÊÖ»ú¿Í»§¶ËUI²âÊÔ·ÖÎö
iPhoneÏûÏ¢ÍÆËÍ»úÖÆÊµÏÖÓë̽ÌÖ
AndroidÊÖ»ú¿ª·¢£¨Ò»£©
Ïà¹ØÎĵµ

Android_UI¹Ù·½Éè¼Æ½Ì³Ì
ÊÖ»ú¿ª·¢Æ½Ì¨½éÉÜ
androidÅÄÕÕ¼°ÉÏ´«¹¦ÄÜ
Android½²ÒåÖÇÄÜÊÖ»ú¿ª·¢
Ïà¹Ø¿Î³Ì

Android¸ß¼¶Òƶ¯Ó¦ÓóÌÐò
Androidϵͳ¿ª·¢
AndroidÓ¦Óÿª·¢
ÊÖ»úÈí¼þ²âÊÔ