1.ΪʲôÐèÒªBeeHive£¿
ÔÚÌìèAppµÄ¿ìËÙ·¢Õ¹¹ý³ÌÖУ¬ÈËÔ±²»¶Ï׳´ó£¬ÒµÎñ²»¶Ï¸´ÔÓ£¬´úÂëÁ¿ËæÖ®Ôö¶à£¬´øÀ´µÄÊÇÐ×÷¿ª·¢ÖÐÓöµ½¸÷ÖÖ¸÷ÑùµÄÎÊÌâ¡£
ÄãÊÇ·ñÔøÔÚÕâÑùµÄ»·¾³Ï¼èÄÑ¿ª·¢£¿Î·ÊÖη½ÅµØ±ß×öÐèÇó±ß¸ÄBUG¡£
ͬʱiOSµÄ¹¤³Ì´úÂëµÄñîºÏ¿ÉÄÜÊÇÕâÑùµÄ£º

AppDelegateÖаüº¬´óÁ¿¿âµÄinitÒÔ¼°ÆäËû²Ù×÷£¬ÉÙÔò¼¸°ÙÐУ¬¶àÔòÉÏǧÐУ¬Î޹شúÂë¶Ñ»ýÔÚÆäÖУ¬Î¬»¤³É±¾¼«¸ß£¬²»Í¬¿âµÄµ÷ÓÃÂß¼»¥Ïཻ´í£¬ÈçÏÂͼËùʾ£º

ÃæÌõʽµÄñîºÏ£¬µ¼ÖÂÉϲãÒµÎñÊÜÏÞÓڵײã»ù´¡¿âµÄÒÀÀµÓ°Ï죬BUGÅŲ黺Âý¡¢Ð¹¦ÄÜÔö¼ÓЧÂÊËæ´úÂëÁ¿µÝÔö¶ø²»¶ÏµÝ¼õ¡£
1.1 ¿ª·¢ÖÐÖ÷ÒªÎÊÌâ
¿ª·¢¹ý³ÌÖÐ×ܽáÁËÒÔÏÂApp¿ª·¢ÖÐÓöµ½µÄÎÊÌ⣺
1.¹¦ÄÜ´úÂëÖ®¼äµÄÒÀÀµ¸´ÔÓ£¬¿Éά»¤ÐÔ²î
2.Ðͬ¿ª·¢¹ý³ÌÖУ¬²¢Ðпª·¢´æÔÚblockÇé¿ö
3.¹¦ÄܽçÏÞ²»ÇåÎú£¬»ù´¡¹¦ÄÜÄ£¿é±ä¶¯£¬»áµ¼ÖÂÉϲãÒµÎñÊܵ½Ó°Ïì
4.¸÷ÍŶӸºÔð¹¦ÄÜÄ£¿é£¬ÔÚÖ÷¹¤³ÌÖÐÓÐñîºÏ´úÂë
5.ÉϲãÒµÎñ»á³öÏÖ·´ÏòÌṩ¹¦Äܸøµ×²ãÇé¿ö
3.ÐÔÄÜ·ÖÎöÓÅ»¯£¬Ëæ´úÂëÔö¼Ó±äµÃÀ§ÄÑ
1.2 AppºÍ¿ª·¢ÈËÔ±µÄËßÇó
Ò»¸öAppÓ¦¸ÃÓÐÈçÏÂÌØÐÔ£º
1.¹¦ÄÜ¿Éά»¤ÐÔ
2.¹¦ÄÜ¿ÉÓÃÐÔ
3.¹¦ÄܾßÓÐÁ¼ºÃÐÔÄÜ
4.¹¦ÄܿɷÖÎö£¬¿ÉÁ¿»¯
5.¹¦Äܿɵ¥Ôª²âÊÔ
¿ª·¢ÈËԱϣÍûÐͬ¿ª·¢ÖÐÄܹ»×öµ½ÒÔϼ¸µã£º
1.²»Ï£Íû±»±ðÈËblockס¿ª·¢
2.ÒÀÀµ¿â°æ±¾¡¢Ô¼¶¨µÄ½Ó¿ÚÒªÎȶ¨
3.ÒÔ×îÉÙÇÖÈëʽ´úÂëÀ´½ÓÈëij¸ö¹¦ÄÜ
´úÂë¸ôÀ뿪·¢ÎÊÌ⣬ͨ¹ýCocoapodsµÃµ½½â¾ö£¬´úÂë²ãÃæ´ïµ½Á˷ָµ«Âß¼¹¦ÄÜÉϵÄñîºÏÎÊÌ⻹ÊÇÎÞ·¨½â¾ö¡£¿ª·¢ÈËԱϣÍûÔÚÀ©Õ¹ÒµÎñµÄͬʱ×öµ½¿ìËÙÎȶ¨£¬Òò´ËÐèÒªÓÐÒ»ÖÖAppÄ£¿é½âñʽÀ´Èÿª·¢ÈËÔ±ÖÐÃâÊÜÒÀÀµ¹ØÏµµÄÍ´¿à£¬ÓÚÊÇÈÿª·¢ÈËÔ±²úÉúÁË´òÔìÒ»¸öBeeHiveÈ«¾Ö»ù´¡¿ò¼ÜµÄÏë·¨¡£
2. BeeHiveµÄ×î¼Ñʵ¼ù
BeeHiveµÄʹÓ÷½·¨¿ÉÒԲο¼BeeHiveµÄREADME¡£ÕâÀï¾ÙÒ»¸öʵ¼Ê¿ª·¢ÖеÄÀý×Ó¡£
2.1 3D-TouchÀý×Ó
2.1.1 ³¡¾°1:´î½¨3DTouch³¡¾°
iPhone 6s¼°ÒÔÉϵÄÉ豸֧³Ö3D-Touchºó£¬¼¸ºõËùÓÐÓ¦Óö¼ÔÚÊÊÅäÆäÌØÐÔ£¬°´ÕÕ¹ßÀý£¬ÔÚAppDelegateÖаüº¬ÈçÏ´úÂ룺
-(void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem
completionHandler:(void (^)(BOOL))completionHandler { .... } |
ÕâÒâζ×ÅAppDelegateÒªÔö³¤´úÂëÐÐÊý£¬ÊµÔòQuickActionµÄ¹¦ÄÜûÓбØÒªÐ´ÔÚAppDelegateÖС£ÀûÓÃBeeHive¿ò¼ÜÌØÐÔ£¬´´½¨3DTouch
Pod£¬¶ÀÁ¢3DTouchÏà¹ØÒµÎñ¹¦ÄÜ¡£
-(void)modQuickAction:(BHContext *)context { .... //process context.shortcutItem } |
2.1.2 ³¡¾°2:3DTouchÐèÒª¶¯Ì¬»¯£¬¿ÉÁ¿»¯
Ò»¸ö¶¯Ì¬ÅäÖÃquickActionÐèÇóµÄµ½À´£¬ÒÔÍùµÄ×ö·¨ÐèÒªÒýÈëÅäÖÃModule£¬´´½¨¶ÔӦһϵÁе÷ÓÃÁ÷³Ì£¬ÕâʱֻÐèÒªµ÷ÓÃÅäÖÃService¼´¿É£¬¶øÇÒÏ£Íû¸üÔçµÄ¸üÐÂquickActionItem£¬ÓÚÊÇ¿ÉÒÔµ÷ÓÃmodInitÀ´ÊµÏÖ¡£
-(void)modQuickAction:(BHContext *)context { .... //update config by configCenter Service } |
²úÆ··½»¹Ï£ÍûÖªµÀÓû§¶¼ÓÃÁËÄÄЩQuickAction£¬Õâʱµ÷ÓÃUserTrack Service¼´¿É£¬ÖîÈç´ËÀàµÄÒ»¸öÉϲãÒµÎñ£¬¿ª·¢ÈËÔ±Òªµ÷ÓÃLog£¬CacheµÈµÈ·þÎñ£¬²ÉÓÃBeeHive
ServiceÐÎʽºóÖ»ÐèÒ»Ðе÷Óü´¿É¡£
2.1.3 ³¡¾°3:3DTouchÐèÒª×öµ½¸öÐÔ»¯
ÔÚûÓзþÎñ¶ËµÄÇé¿öÏ£¬ÈçºÎ×öµ½QuickAction¸öÐÔ»¯£¬×¢²á²¢ÌṩÁË3DTouchBHService£¬¸øÆäËûÒµÎñµ÷ÓñÈÈçij¸ö¹¦ÄÜÒ³Ãæ
-(void)updateAccessTimesWithActionURL:(NSURL *)actionURL { .... // save view controller access times by cache service // update local quickAction Items by access times and any other element } |
ÉÏÃæÈý¸öµäÐͳ¡¾°Ö÷񻃾¼°µÄµ½BeeHive¼¸´ó¹¦Äܵ㣺
1.ModuleµÄ´´½¨£¬¸ÐÖªAppÉúÃüÖÜÆÚ
2.¶ÔÄÚÒýÈë¡¢µ÷ÓÃService
3.¶ÔÍâÌṩService
4.¹¦ÄÜÒÆÖ²£¬ÎÞÐècopy£¬podfileÖÐÔö¼ÓpodÔ´
Õû¸ö3DTouch¿ª·¢¹ý³ÌÖв»Éæ¼°ÆäËûÆäËû¹¦ÄܵľßÌåʵÏÖ£¬ÃæÏòÇÐÆ¬±à³Ì¹ý³ÌÖУ¬Ö»Òª¹ØÐÄ×Ô¼ºÄ£¿é¶ÔÓ¦µÄÐèÇó¼´¿É¡£
3. BeeHive½á¹¹ÓëÔÀí½âÎö
BeeHive½è¼øÁËSpring Service¡¢Apache DSOµÄ¼Ü¹¹ÀíÄ²ÉÓÃAOP+À©Õ¹AppÉúÃüÖÜÆÚAPIÐÎʽ£¬½«ÒµÎñ¹¦ÄÜ¡¢»ù´¡¹¦ÄÜÄ£¿éÒÔÄ£¿é·½Ê½ÒÔ½â¾ö´óÐÍÓ¦ÓÃÖеĸ´ÔÓÎÊÌ⣬²¢ÈÃÄ£¿éÖ®¼äÒÔServiceÐÎʽµ÷Ó㬽«¸´ÔÓÎÊÌâÇз֣¬ÒÔAOP·½Ê½Ä£¿é»¯·þÎñ£¬¾ÙÀýÀ´ËµÈÕÖ¾¡¢ÂñµãÄ£¿é²ÉÓÃAOP·½Ê½ºó£¬ÒµÎñ·½²»ÐèÒª¿¼ÂÇÈÕÖ¾¡¢ÂñµãµÄÏà¹Ø´úÂ룬ֻҪÒÔcreateServiceÈ¥ÉùÃ÷µ÷ÓÃService¼´¿É¡£
ÏàÓ¦µÄBeeHive¼Ü¹¹ÈçÏ£º

Core + pluginµÄÐÎʽ¿ÉÒÔÈÃÒ»¸öÓ¦ÓÃÖ÷Á÷³Ì²¿·ÖµÃµ½¼¯ÖйÜÀí£¬²»Í¬Ä£¿éÒÔpluginÐÎʽ´æÔÚ£¬±ãÓÚºáÏòµÄÀ©Õ¹ºÍÒÆÖ²¡£
ͼÖеÄBHContext£¬ÊÇBeeHiveµÄÅäÖÃÎļþ£¬Ìṩȫ¾ÖͳһÉÏÏÂÎÄÐÅÏ¢¡£
ͼÖеÄBHCore¼´BeeHiveÌṩע²á¡¢´´½¨Module¡¢ServiceÂß¼£¬Module¡¢Service×¢²áºÍµ÷ÓÃÂß¼Ö»ºÍºËÐÄÄ£¿éÏà¹Ø£¬ModuleÖ®¼äûÓÐÖ±½ÓµÄ¹ØÁª¹ØÏµ¡£
BeeHiveºËÐÄ˼ÏëÉæ¼°Á½¸ö²¿·Ö£º
1.¸÷¸öÄ£¿é¼äµ÷ÓôÓÖ±½Óµ÷ÓöÔӦģ¿é£¬±ä³Éµ÷ÓÃServiceµÄÐÎʽ£¬±ÜÃâÁËÖ±½ÓÒÀÀµ¡£
2.AppÉúÃüÖÜÆÚµÄ·Ö·¢£¬½«ñîºÏÔÚAppDelegateÖÐÂß¼²ð·Ö£¬Ã¿¸öÄ£¿éÒÔ΢ӦÓõÄÐÎʽ¶ÀÁ¢´æÔÚ¡£
BeeHiveÌṩÁËÈýÖÖ²»Í¬µÄµ÷ÓÃÐÎʽ£¬¾²Ì¬plist£¬¶¯Ì¬×¢²á£¬annotation¡£Module¡¢ServiceÖ®¼äûÓйØÁª£¬Ã¿¸öÒµÎñÄ£¿é¿ÉÒÔµ¥¶ÀʵÏÖModule»òÕßServiceµÄ¹¦ÄÜ¡£
3.1 Module

ͼÖаüº¬ÁËÖ÷ÒªµÄBeeHiveÆô¶¯¹ý³ÌÒÔ¼°ModuleµÄʱÐòÂß¼¡£ModuleµÄʼþ·Ö·¢Ô´ÓÚBHAppDelegateÖеÄtriggerEvent£¬¶ÔÓ¦GlobalContextÒ²Ôڻص÷ÖÐÌṩ¸øÒµÎñ·½¡£
BHAppDelegateÖгýÁ˻ص÷ϵͳµÄʼþ£¬»¹½«AppÉúÃüÖÜÆÚ½øÐÐÀ©Õ¹£¬Ôö¼ÓModuleSetup£¬ModuleInit£¬ModuleSplash£¬´ËÍ⿪·¢ÈËÔ±»¹¿ÉÒÔ×ÔÐÐÀ©Õ¹¡£

À©Õ¹ÖÜÆÚ¹ý³ÌÖУ¬Í¬Ê±¼ÓÈëModule·ÖÎöÁ¿»¯¹¦ÄÜ£¬Ã¿¸öÄ£¿éInitµÄºÄʱ¾ù¿É¼ÆËã³öÀ´£¬ÎªÐÔÄÜÓÅ»¯×öµ½Êý¾ÝÉϵÄÖ§³Ö¡£Ò»¸öAppµÄÒµÎñÔö¶à¹ý³ÌÖУ¬Í¨¹ý·ÖÎö¶¨Î»ModuleµÄInitºÄʱ¿ÉÒÔÈ·¶¨ÐèÒªÓÅ»¯µÄModule¡£
Module×ñÑBHModuleProtocolºó£¬Äܹ»²¶»ñApp״̬µÄ»Øµ÷£¬²¢ÓµÓÐAppÉúÃüÖÜÆÚÄÚµÄÈ«¾ÖÉÏÏÂÎÄ£¬Í¨¹ýcontext¿É»ñÈ¡ÅäÖòÎÊý£¬Ä£¿é×ÊÔ´ÒÔ¼°·þÎñ×ÊÔ´¡£
ÒÔBeeHive×÷Ϊµ×²ã¿ò¼ÜµÄApp£¬³ýÁ˽âñî´øÀ´µÄ±ãÀû£¬¿ª·¢ÈËÔ±ÔÚ¿ª·¢ÐÂApp¹ý³ÌÖÐÉæ¼°Ïàͬ¹¦ÄܵÄModule£¬ÎÞÐèÖØ¸´ÔìÂÖ×Ó£¬Ö±½ÓÒÆÖ²Module£¬¿ª·¢Ò»¸öAppÈçͬƴװ»ýľ£¬ÄÜ×éºÏÐèÒªµÄ¹¦ÄÜÒµÎñ¡£
3.2 Service

ÉÏÊöͼÖаüº¬ServiceÏà¹ØµÄÂß¼£¬ÒµÎñA¿ÉÒÔͨ¹ýcreateServiceÖ±½Óµ÷Ó÷þÎñ£¬Module¸ù¾ÝÐèÇó¶¯Ì¬×¢²áij¸ö·þÎñ¡£ServiceµÄµ÷ÓúÍʵÏÖ£¬ºËÐÄÊÇBHServiceManager¡£¿ÉÒÔµ¥¶À´´½¨Services
interface Pod£¬Í³Ò»·ÅÖÃÒªÓõÄServices£¬ÕâÑùµÄÒµÎñÒÀÀµ¾Í´ÓÍø×´Ê½±ä³ÉÖÐÐÄʽ£¬ÒµÎñ·½Ö»ÐèÒÀÀµServicesÒ»¸ö¡£
Service¿ÉÒÔ¶¯Ì¬¹²Ïí¶ÔÏ󣬰´Ðè¼ÓÔØ£¬BeeHiveÂß¼Êǽ«»ù´¡·þÎñ×¢²áÔÚplistÖУ¬ÒµÎñÐÍ·þÎñÔÊÐíService²»ÏÈ×¢²á£¬Ö±µ½ÒµÎñÐèҪʱ²Å±»¶¯Ì¬×¢²á¡£
ServiceÖ§³ÖÁ½ÖÖ²»Í¬Ä£Ê½£º
1.µ¥Àý£º ¶ÔÓÚÈ«¾ÖͳһÇÒÎÞ״̬·þÎñ£¬½¨ÒéʹÓÃÕâÖÖ´´½¨ÐÎʽ£¬ÕâÑùÓÐÀûÓÚServiceµÄͳһ¹ÜÀíÒÔ¼°¼õÉÙ²»±ØÒªÄÚ´æÏûºÄ¡£
2.¶àʵÀý£º ÿ´Îµ÷Ó÷þÎñ¶¼ÖØÐ´´½¨ÐµķþÎñ£¬¶ÔÓÚÉæ¼°×´Ì¬ÒÔ¼°×´Ì¬±ä»¯µÄ·þÎñ×îÊʺÏʹÓöàʵÀý·½Ê½¡£
ÔÚ¶àÏ̻߳·¾³ÏÂÓöµ½ÁËService¶ÁдÎÊÌ⣬ÒÑͨ¹ýLockÀ´ÒѱÜÃâArray crashÎÊÌâ¡£
²»¹ýService»¹´æÔÚÈçÏÂÎÊÌ⣺
1.ServiceÒÀÀµ¹ØÏµ,µ¼ÖµײãÒÀÀµµÄServiceûÓб»´´½¨Ê±¾Í±»µ÷Óá£
2. ¹æ»®Service¡¢Module´´½¨Ë³Ðò£¬Ê¹µÃApp´ïµ½Ã뿪£¬ÓÅ»¯ÐÔÄÜÌåÑé¡£
ǰÕßÒÀÀµÎÊÌâ¼Æ»®Í¨¹ýµ÷¶È»úÖÆÀ´½â¾ö£¬ºóÕß»¹ÐèÒª½«AppDelegate¸ü¶àÒµÎñ°þÀëÒÔ¼°Êµ¼ù²Å¿É£¬ÕâÀﲻϸ̸¡£
4. BeeHive±³ºóµÄ˼¿¼
BeeHiveÒÔÒ»¸ö·Ö·¢App״̬ºÍͳһService InterfaceµÄ¼Ü¹¹ÐÎʽ½â¾öÁ˶àÍŶӶ࿪·¢ÈËÔ±Ðͬ¿ª·¢ÖеÄñîºÏÎÊÌâ¡£¶ÔÓÚʵ¼ù¹ý³ÌÖеĿª·¢³É±¾£¬ÊÊÓ¦ÐèÒªÒ»¶¨¹ý³Ì£¬µ«Âß¼Àí˳ºó£¬Ó¦ÓÃÆðÀ´²»³ÉÎÊÌâ¡£¾ÍÊÕÒæ¶øÑÔ£¬BeeHive¸üÊʺϴóÐ͵ĶàÈËÏîÄ¿ÒÔ¼°¿ìËÙÒÆÖ²µÄÏîÄ¿£¬Ð¡ÏîĿʹÓÃÆðÀ´½Ï¸´ÔÓ£¬ÓÐЩµÃ²»³¥Ê§¡£
ÖÁ´Ë£¬BeeHiveÖÐÖ÷ÌåÒÑ·ÖÎöµ½Î»£¬BeeHiveÊÇÒ»¸öÕýÔڳɳ¤µÄiOS¿ò¼Ü£¬Ä¿Ç°StarÒÑ1500+£¬Ï£Íû´ó¼Ò¿ÉÒÔ¼¯Ë¼¹ãÒæ£¬¶àÌáissue¡¢Pull
Request£¬ÕâÑùBeeHiveÒ²ÄÜÈøü¶àÈËÊÜÓá£ÏëÏóÒ»ÏÂÏñÃÛ·äÒ»ÑùÓÅÑŵشÿ¸ö·äÎÑÄ£¿é¡£

5. ²Î¿¼
1.SpringÏà¹Ø×ÊÁÏ
2.Apache DSO²Î¿¼Á´½Ó
3.Cocoapods×ÊÁÏ
|