±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚcsdn,ÎÄÕÂÖ÷Òª·ÖÏíÁËcasatwy
µÄһЩ˼·ºÍ˼¿¼ÎÊÌâµÄ½Ç¶È£¬Ï£Íû¶ÔÄúµÄѧϰÓаïÖú¡£ |
|
ͳһµÄµ÷ÓÃʵÏÖ
½«¡¸URL µ÷ÓṺ͡¸×é¼þ¼äµ÷Óá¹Í¨¹ý runtime ´ïµ½Í³Ò»£¬Í¨¹ý prefix µÄ·½Ê½À´±ÜÃⰲȫÉϵÄһЩ©¶´¡£¿´ÆðÀ´È·Êµ»áÊæ·þЩ£¬Ò²±È½ÏÁé»î¡£
ͨ¹ý Category À´Í³Ò»×é¼þ¶ÔÍⱩ¶µÄ½Ó¿Ú
Ö§³Ö openURL: µ«×îÖÕ»¹ÊÇ×ßµÄ target-action£¬¸úÄÚ²¿µ÷ÓÃÎÞ²î±ð¡£ ÕâÒ²ÊÇÎÒÃÇĿǰÓдýÌáÉýµÄµã£¬ÏëÖªµÀij¸ö×é¼þÖ§³ÖÄÄЩ
URL »ò ÄÄЩ Protocol ²»¹»·½±ã£¬URL µÄ²ÎÊý´«µÝÒ²ÊǸöÎÊÌ⣬½«À´ URL ·¢Éú±ä¶¯µÄ»°£¬µ÷ÕûÆðÀ´Ò²±È½ÏÂé·³¡£ºóÐø»áÔÚÕâ¿éÔÙ¼Óǿϡ£
µ±³õ¾ö¶¨Ê¹Óà openURL: À´×öÒ³Ãæ¼äµÄÌø×ª£¬¶ø²»ÊÇ·½·¨µ÷Óã¬Ö÷ÒªÊÇ¿¼Âǵ½ÎÒÃǵĴ󲿷ֳ¡¾°¶¼¿ÉÒÔͨ¹ýÕâÖÖ·½Ê½½â¾ö£¬Òò´Ë¾ÍÕâô¶¨ÁË¡£openURL:
¸üÏñ Android ÀïµÄ ¡¸Òþʽ Intent¡¹£¬²»¹ØÐÄËÀ´´¦ÀíÕâ¸ö URL£¬ÓÉϵͳ£¨MGJRouter£©À´¾ö¶¨¡£¶ø·½·¨µ÷ÓøüÏñ¡¸ÏÔʽ
Intent¡¹»òÕß RPC£¬Ã÷È·µØÖªµÀÓ¦¸ÃÓÉËÀ´´¦Àí¡£Ç°Õߵĺô¦ÊÇ¿ÉÒÔ¸üÉٵعØÐÄÒµÎñÂß¼£¬ºóÕߵĺô¦ÊÇ¿ÉÒԺܷ½±ãµØÍê³É²ÎÊý´«µÝ¡£
¸üÃ÷È·µÄ±íÊö
1.openURL Ö»ÊÇÒ³Ãæ¼äµÄµ÷Ó÷½Ê½
2.×é¼þ¼äµÄµ÷ÓÃͨ¹ý protocol À´ÊµÏÖ
ÿ¸ö×é¼þ¶¼ÓÐÒ»¸ö Entry£¬Õâ¸ö Entry£¬Ö÷Òª×öÁËÈý¼þÊÂ
1.×¢²áÕâ¸ö×é¼þ¹ØÐÄµÄ URL
2.×¢²áÕâ¸ö×é¼þÄܹ»±»µ÷Óõķ½·¨/ÊôÐÔ
3.ÔÚ App ÉúÃüÖÜÆÚµÄ²»Í¬½×¶Î×ö²»Í¬µÄÏìÓ¦
×¢²áÕâ¸ö×é¼þ¹ØÐÄµÄ URL

[MGJRouter
registerURLPattern:@"mgj://detail?id=:id"
toHandler:^(NSDictionary *routerParameters)
{
NSNumber *id = routerParameters[@"id"];
// create view controller with id
// push view controller
}]; |
URL µÄ×¢²á»áÓжÔÓ¦µÄ block£¬Äõ½Õâ¸ö URL ºó£¬ÏëÔõôÕÛÌÚ¾ÍÔõôÕÛÌÚ¡£
×¢²áÕâ¸ö×é¼þÄܹ»±»µ÷Óõķ½·¨/ÊôÐÔ
µ±ÓÐһЩ³¡¾°²»ÊʺÏÓà URL µÄ·½Ê½Ê±£¬¾Í¿ÉÒÔͨ¹ý×¢²á protocol À´ÊµÏÖ

[ModuleManager registerClass:ClassA forProtocol:ProtocolA]
µÄ½á¹û¾ÍÊÇÔÚ MM ÄÚ²¿Î¬»¤µÄ dict ÀïмÓÁËÒ»¸öÓ³Éä¹ØÏµ¡£
[ModuleManager classForProtocol:ProtocolA] µÄ·µ»Ø½á¹û¾ÍÊÇ֮ǰÔÚ
MM ÄÚ²¿ dict Àï protocol ¶ÔÓ¦µÄ class£¬Ê¹Ó÷½²»ÐèÒª¹ØÐÄÕâ¸ö class ÊǸöʲô¶«¶«£¬·´ÕýʵÏÖÁË
ProtocolA ÐÒ飬ÄÃÀ´ÓþÍÐС£
ÕâÀïÐèÒªÓÐÒ»¸ö¹«¹²µÄµØ·½À´ÈÝÄÉÕâЩ public protocl£¬Ò²¾ÍÊÇͼÖÐµÄ PublicProtocl.h
ÔÚ App ÉúÃüÖÜÆÚµÄ²»Í¬½×¶Î×ö²»Í¬µÄÏìÓ¦
ÉÏһƪÎÄÕÂÖÐÓÐÌáµ½£¬ÕâÀï¼òµ¥ËµÏ£¬ModuleEntry£¬ÊµÏÖij¸öÌØ¶¨µÄÐÒé(¸ÃÐÒé¼Ì³Ð×ÔUIApplicationDelegate
)£¬È»ºóʵÏÖ¶ÔÓ¦µÄ·½·¨¼´¿É¡£
Õë¶ÔcasatwyÄÇÆªÎÄÕµÄһЩ»ØÓ¦
µ¥´¿ÒÔopenURLµÄ·½Ê½ÊÇÎÞ·¨Ê¤ÈÎÈÃÒ»¸öAppȥʵʩ×é¼þ»¯¼Ü¹¹µÄ
ͬÒ⣬ËùÒÔÎÒÃDz¢²»Ö»ÓÐ openURL Ò»ÖÖ·½Ê½
¸ù±¾ÎÞ·¨±í´ï·Ç³£¹æ¶ÔÏó
µ¥´¿µØÍ¨¹ý openURL ȷʵ²»Ì«ºÃ±í´ï£¬µ«ÎÒÃDz¢²»Ö»ÓÐ openURL Ò»ÖÖ·½Ê½
×¢²áURLµÄÄ¿µÄÆäʵÊÇÒ»¸ö·þÎñ·¢ÏֵĹý³Ì£¬ÔÚiOSÁìÓòÖУ¬·þÎñ·¢Ïֵķ½Ê½ÊDz»ÐèҪͨ¹ýÖ÷¶¯×¢²áµÄ£¬Ê¹ÓÃruntime¾Í¿ÉÒÔÁË¡£ÁíÍ⣬ע²á²¿·ÖµÄ´úÂëµÄά»¤ÊÇÒ»¸öÏà¶ÔÂé·³µÄÊÂÇ飬ÿһ´ÎÖ§³Öе÷ÓÃʱ£¬¶¼ÒªÈ¥Î¬»¤Ò»´Î×¢²áÁÐ±í¡£Èç¹ûÓе÷Óñ»ÆúÓÃÁË£¬ÊǾ³£»áÍü¼ÇɾÏîÄ¿µÄ¡£runtimeÓÉÓÚ²»´æÔÚ×¢²á¹ý³Ì£¬ÄǾÍÒ²²»»á²úÉúά»¤µÄ²Ù×÷£¬Î¬»¤³É±¾¾Í½µµÍÁË¡£
ÓÉÓÚͨ¹ýruntime×öµ½ÁË·þÎñµÄ×Ô¶¯·¢ÏÖ£¬ÍØÕ¹µ÷ÓýӿڵÄÈÎÎñ¾Í½öÔÚÓÚ¸÷×ÔµÄÄ£¿é£¬ÈκÎÒ»´ÎнӿÚÌí¼Ó£¬ÐÂÒµÎñÌí¼Ó£¬¶¼²»±ØÈ¥Ö÷¹¤³Ì×ö²Ù×÷£¬Ê®·Ö͸Ã÷¡£
¾¡¹Üͨ¹ý runtime ¿ÉÒÔ×öµ½ÕâЩ£¬µ«×îÖÕ»¹ÊÇҪͨ¹ýά»¤ Category À´±©Â¶ÐÂÔöµÄ Target-Action£¬ËùÒÔ
runtime ËäÈ»²»´æÔÚ×¢²á¹ý³Ì£¬µ«Êµ¼ÊʹÓùý³ÌÖУ¬»¹ÊÇ»áÓÐ×¢²á¹ý³Ì£¬»¹ÊÇÐèҪȥά»¤¡£
ûÓвð·ÖÔ¶³Ìµ÷Óúͱ¾µØ¼äµ÷ÓÃ
´ÓÉÏÃæµÄͼ¿ÉÒÔ¿´µ½£¬ÎÒÃÇÆäʵÊÇ·ÖΪ¡¸×é¼þ¼äµ÷ÓṺ͡¸Ò³Ãæ¼äÌø×ª¡¹Á½¸öά¶È£¬Ö»Òª app ÏìӦij¸ö
URL£¬ÎÞÂÛÊÇ app ÄÚ»¹ÊÇ app Íâ¶¼¿ÉÒÔ£¬¶ø¡¸×é¼þ¼ä¡¹µ÷ÓÃ×ßµÄÍêÈ«ÊÇÁíÒ»Ìõ·£¬ËùÒÔÒ²²»»áÓа²È«ÉϵÄÎÊÌâ¡£
ÒÔÔ¶³Ìµ÷Óõķ½Ê½Îª±¾µØ¼äµ÷ÓÃÌṩ·þÎñ
ͬÉÏ
±¾µØ¼äµ÷ÓÃÎÞ·¨´«µÝ·Ç³£¹æ²ÎÊý£¬¸´ÔÓ²ÎÊýµÄ´«µÝ·½Ê½·Ç³£³óª
ͬÉÏ£¬Ê¹Óà Protocol
±ØÐëÒªÔÚ app Æô¶¯Ê±×¢²á URL ÏìÓ¦Õß
Êǵ쬾ÍÄ¢¹½½ÖµÄ·½°¸À´Ëµ£¬Õâ²½²»¿É±ÜÃâ¡£
Õâ¸ö²»±ØÒªµÄ²Ù×÷»áµ¼Ö²»±ØÒªµÄά»¤³É±¾
ά»¤Ö»ÊÇÔÚ×é¼þÄÚ²¿×öµ÷Õû£¬²¢²»ÐèÒªÔÚÖ÷¹¤³ÌÀï×öÐ޸ġ£Èç¹û²ÉÓà Category µÄ·½Ê½£¬ºÃ´¦ÊDz»ÓÃÔÚÆô¶¯Ê±×¢²á£¬µ«µ±×é¼þµÄ½Ó¿ÚÓб䶯ʱ£¬ÒÀȻҪά»¤
Category£¬Õâ¸ö³É±¾ÊÇÃâ²»Á˵ġ£
ÐÂÔö×é¼þ»¯µÄµ÷Ó÷¾¶Ê±£¬Ä¢¹½½ÖµÄ²Ù×÷Ïà¶Ô¸´ÔÓ ÔÚ±¾Îĸø³öµÄ×é¼þ»¯·½°¸ÖУ¬ÏìÓ¦ÕßΨһҪ×öµÄÊÂÇé¾ÍÊÇÌṩTargetºÍAction£¬²¢²»ÐèÒªÔÙ×öÆäËüµÄÊÂÇé
ÌṩÁË Target-Action Ö®ºó£¬»¹ÊÇÒªÔÚ Category ÀïÌí¼ÓÒ»¸ö wrapper
µÄ°É?
ûÓÐÕë¶Ô target ²ã×ö·â×° ÕâÖÖ×ö·¨Ê¹µÃËùÓеĿç×é¼þµ÷ÓÃÇëÇóÖ±½Óhitµ½ÒµÎñÄ£¿é£¬ÒµÎñÄ£¿é±ØÈ»Òò´Ë±äµÃÓ·Ö×ÄÑÒÔά»¤£¬ÊôÓÚÇÖÈëʽ¼Ü¹¹¡£Ó¦¸Ã½«Ô±¾ÊôÓÚµ÷ÓÃÏàÓ¦µÄ²¿·ÖÄóöÀ´·ÅÔÚtarget-actionÖУ¬²ÅÄܾ¡¿ÉÄܱ£Ö¤²»½«Î޹شúÂëÇÖÈëµ½ÔÓÐÒµÎñ×é¼þÖУ¬²ÅÄܱ£Ö¤ÒµÎñ×é¼þδÀ´µÄÇ¨ÒÆºÍÐ޸IJ»ÊÜ×é¼þµ÷ÓõÄÓ°Ï죬ÒÔ¼°½µµÍΪÏîÄ¿µÄ×é¼þ»¯ÊµÊ©¶ø´øÀ´µÄʱ¼ä³É±¾¡£
¡¸½«Ô±¾ÊôÓÚµ÷ÓÃÏàÓ¦µÄ²¿·ÖÄóöÀ´·ÅÔÚtarget-actionÖС¹²¢²»ÊÇΨһ¿ÉÐеķ½Ê½£¬Ê¹Óà Protocol/URL
×¢²áÒ²¿ÉÒԴﵽЧ¹û¡£
С½á
casatwy µÄһЩ˼·ºÍ˼¿¼ÎÊÌâµÄ½Ç¶Èͦ²»´íµÄ£¬Ò²´ÓËûµÄÎÄÕÂÖÐÊÕ»ñÁ˲»ÉÙ£¬Ï£ÍûÕâÆªÎÄÕÂÄܰÑ֮ǰģºýµÄһЩ¹ÛÄî˵µÃ×ã¹»Çå³þ£¬»¹ÓÐÎÊÌâµÄ»°»¶Ó¼ÌÐø½»Á÷£º£© |