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¡£ |