|
ÕªÒª£ºµÚÈý·½SDKµÄ¿ª·¢ÐèÒª¿¼ÂǺܶàÒòËØ£¬±ÈÈçÎȶ¨ÐÔ¡¢Áé»îÐԵȣ¬²¢ÇÒ»¹Òª×öµ½ÄÜÈÿª·¢ÕßÄÜ×ÔÓɶ¨ÖÆUI²ã¡¢Ìæ»»×Óϵͳ¡£±¾ÎÄÒÔÓÑÃË΢ÉçÇøÎªÀý£¬Ïêϸ½²½âÁËÔÚ¿ª·¢SDKʱ¼Ü¹¹·½ÃæµÄÉè¼ÆÀíÄî¡£
¿ª·¢AndroidµÚÈý·½SDK˵ÄѲ»ÄÑ£¬µ«Ëµ¼òµ¥Ò²²»¼òµ¥£¬Òª¿ª·¢Ò»¸ö¸øºÜ¶àÈËʹÓõĵÚÈý·½SDK£¬ÈçºÎÔÚ±£Ö¤Îȶ¨ÐÔµÄͬʱ£¬ÔöÇ¿SDKµÄÁé»îÐÔ£¬Èÿª·¢ÕßÄÜ×ÔÓɶ¨ÖÆUI²ã¡¢Ìæ»»×Óϵͳ£¬ÕâÊÇÒ»¸öÖµµÃ˼¿¼µÄÎÊÌ⡣ΪÁ˽â¾öÕâ¸öÎÊÌ⣬¿ª·¢µÚÈý·½SDK±ØÐëÒªÓÐÁ¼ºÃµÄÓ¦Óüܹ¹¡£±¾ÎľͷÖÏíÒ»ÏÂÎÒÔÚ¿ª·¢ÓÑÃË΢ÉçÇøSDKʱÔڼܹ¹·½ÃæµÄһЩÏë·¨¡£
ÓÑÃ˵Ä΢ÉçÇøÊÇÒ»¿î°ïÖú¿ª·¢ÕßÔÚÓ¦ÓÃÖпìËٴһ¸öÉçÇø£¨ÀàËÆÓÚÐÂÀË΢²©¡¢ÅóÓÑȦ£©£¬Ä¿Ç°ÕýÔÚÄڲ⵱ÖС£
¼¼Êõ¼Ü¹¹
´ÓÏîÄ¿½á¹¹ÉÏÀ´Ëµ£¬ÓÑÃË΢ÉçÇøSDK¿ÉÒÔ¼òµ¥·ÖΪÈçÏÂÈý²ã¡£
- UI²ã£¨¿ªÔ´£©¡£UI²ã¶ÔÍ⿪·Å£¬Ä¿µÄÊÇÈÃÓû§Äܹ»¶¨ÖÆÎ¢ÉçÇøµÄUIЧ¹û£¬Ê¹Î¢ÉçÇøSDKÄܹ»ºÜ×ÔÈ»µÄÈÚÈëµ½Óû§µÄAppÖС£
- ÒµÎñÂß¼²ã¡£ÒµÎñÂß¼²ã»áͨ¹ýÒ»¸öͳһµÄ½Ó¿ÚÏòUI²ãÌṩÊý¾ÝÇëÇóµÈ¹¦ÄÜ£¬±ÈÈç»ñÈ¡»º´æµÄfeed¡¢ºÃÓÑÁбíµÈ£¬Òò´ËÒµÎñÂß¼²ã¶ÔÓÚÓû§À´ËµÊÇÒ»¸öÊý¾Ý²Ù×÷½Ó¿Ú£¬Í¨¹ýÕâ¸ö½Ó¿ÚÓû§Äܹ»ÓëSDKºËÐÄ²ã½øÐÐһЩÊý¾Ý·½ÃæµÄ²Ù×÷¡£
- ºËÐIJ㡣ºËÐIJãÔò°üº¬ÁËÓÑÃËSDKµÄºËÐÄϵͳ³éÏ󣬱ÈÈçÕË»§ÏµÍ³¡¢ÍÆËÍ¡¢Êý¾Ý¿â¡¢ÍøÂç²Ù×÷µÈ£¬ÕâÒ»²ã¶ÔÍâ·â±Õ£¬Óû§¿ÉÒÔͨ¹ýһЩ½Ó¿ÚÓëºËÐÄ²ã½øÐн»»¥¡£¶øºËÐIJ㶨ÒåµÄ³éÏóʹµÃÓû§¿ÉÒԺܷ½±ãµÄʵÏÖ¶¨ÖÆ»¯£¬¼´×Ô¼ºÊµÏÖ³éÏó½Ó¿Ú£¬È»ºó½«¾ßÌåµÄʵÏÖ×¢È뵽΢ÉçÇøÖУ¬´Ó¶øÊ¹×Ô¼ºµÄ×ÓÏµÍ³Ìæ»»µô΢ÉçÇøÖеÄĬÈÏʵÏÖ¡£
Èçͼ1Ëùʾ£¬SDK²ã´Î·Ç³£·ÖÃ÷£¬Í¨¹ýÕâÈý¸ö²ã´ÎµÄ¸ôÀ룬ʹµÃÓû§¼È¿ÉÒÔ×Ô¶¨Òå×îÍâ²ãµÄUIЧ¹û£¬Ò²¶ÔÍâÒþ²ØÁËÒµÎñÂß¼²ã¡¢ºËÐIJãµÄʵÏÖϸ½Ú¡£¶øºËÐIJ㶨ÒåµÄ×Óϵͳ³éÏó£¬Ê¹µÃÓû§¿ÉÒÔ×¢Èë×Ô¼ºµÄʵÏÖ£¬±£Ö¤ÁËÕû¸ö΢ÉçÇøSDKµÄÁé»îÐÔ¡¢À©Õ¹ÐÔ¡£

ͼ1 Ñó´Ð½á¹¹Í¼
¼òµ¥À´Ëµ£¬¾ÍÊÇÓû§ÔÚUI²ãͨ¹ýÂß¼²ã±©Â¶µÄͨÓýӿÚÀ´²Ù×÷SDK£¬´Ó·â±ÕµÄºËÐÄϵͳÖлñÈ¡¡¢´æ´¢Êý¾ÝÒÔ¼°ÆäËûµÄÏà¹Ø²Ù×÷¡£²ã´Î½á¹¹Èçͼ2Ëùʾ¡£

ͼ2 ²ã´Î½á¹¹Í¼
ͼ1¡¢Í¼2¶¼ÏÔʾÁËSDKÊÇͨ¹ý²»Í¬µÄ²ã´ÎÀ´·ÖÀëÖ°Ôð£¬ÊÇÒ»¸ö½ÏΪµäÐ͵ļܹ¹ÐÎʽ¡£¶ÔÓÚÓû§À´Ëµ£¬×î¹ØÐĵÄιýÓڿɶ¨ÖÆ»¯¡£UI²ã¿ª·ÅÔ´Â룬×ÔÈ»¿ÉÒÔͨ¹ýÐ޸ĴúÂëÀ´ÊµÏÖ¡£ÆäËûµÄ¶¨ÖÆ»¯Óû§¾ÍÐèÒªÒÀÀµ×¢ÈëÀ´ÊµÏÖ¡£Î¢ÉçÇøSDKÄÚ²¿ÒÀÀµÓÚ³éÏ󣬶ø²»ÒÀÀµÓÚ¾ßÌåʵÏÖ£¬²¢ÇÒÓû§¿ÉÒÔ×¢Èë¾ßÌåʵÏÖ¡£Ò²¾ÍÊÇ˵Óû§¿ÉÒÔ¸ù¾ÝÎÒÃǵijéÏó½Ó¿ÚʵÏÖ×Ô¼ºµÄ×Óϵͳ£¬È»ºó×¢Èëµ½SDKÄÚ²¿£¬SDK´Ëʱ¾Í»áʹÓÃÓû§×¢ÈëµÄʵÏÖ£¬ÕâÑù¾Í´ïµ½ÁË×ÓÏµÍ³Ìæ»»µÄЧ¹û£¬Ò²¾ÍÊÇÎÒÃÇ˵µÄ¶¨ÖÆ»¯¡£
ÓÑÃË΢ÉçÇøµÄ¶¨ÖÆ»¯
ÈçºÎÂú×ã¶¨ÖÆ»¯£¿
ÄÇôÈçºÎÀ´ÊµÏÖ¶¨ÖÆ»¯ÄØ£¿ÓÑÃË΢ÉçÇøSDKÄÚ²¿¶¨ÒåÁËһЩ³éÏ󣬱ÈÈçLoginable¡¢Pushable¡¢ImageLoaderÀ´·Ö±ð´ú±íµÇ¼ϵͳ½Ó¿Ú¡¢ÍÆËͽӿڡ¢Í¼Æ¬¼ÓÔØ½Ó¿Ú£¬Ã¿ÖÖ½Ó¿Ú¶¼ÓÐÒ»¸öSDKManagerÀ´½øÐйÜÀí¡£±ÈÈç¹ÜÀíµÇ¼×ÓϵͳµÄ¾ÍÊÇLoginSDKManager£¬Óû§¿ÉÒÔÍùÕâ¸öManagerÀïÃæÌí¼Ó¡¢ÒƳý¾ßÌåµÄµÇ¼ϵͳʵÏÖ£¬È»ºóͨ¹ýuseThisº¯ÊýÀ´Ö¸¶¨Ê¹ÓÃij¸ö¾ßÌåµÄʵÏÖ£¨SDK ManagerÀïÃæ¿ÉÄÜÓжà¸öʵÏÖ£©¡£½á¹¹Í¼Èçͼ3Ëùʾ¡£

ͼ3 LoginSDKManager¹¦ÄÜ
SDK ManagerÊÇÒ»¸ö·ºÐÍÀ࣬ÀàÐÍT¾Í´ú±íÁ˽ӿÚÀàÐÍ£¬±ÈÈçÉÏÊöµÄLoginableµÈ¡£Í¨¹ý·ºÐÍÎÒÃǾͿÉÒÔ½«ÕâЩͨÓõÄÌí¼Ó¡¢ÒƳýʵÏֵȲÙ×÷³éÏ󻯣¬±ÜÃâÖØ¸´´úÂë¡£´úÂëÈçÏÂËùʾ£º
public abstract class SDKManager<T> {
// ·ºÐÍMap
private Map<String, T> mImplMap = new HashMap<String, T>();
// ҪʹÓõÄʵÏÖµÄkey
private String mCurrentKey = "";
public void addImpl(String key, T impl) {
mImplMap.put(mCurrentKey, impl);
}
public void removeImpl(String key) {
mImplMap.remove(mCurrentKey);
}
public void useThis(String key) {
mCurrentKey = key;
}
public T getCurrentImpl() {
return mImplMap.get(mCurrentKey);
}
} |
´úÂëºÜ¼òµ¥£¬¾ÍÊÇÔÚSDK ManagerÄÚ²¿Î¬»¤ÁËÒ»¸öMap£¬keyÊÇÓû§ÎªÕâ¸öʵÏÖÖ¸¶¨µÄÒ»¸ö×Ö·û´®Öµ£¬value¾ÍÊǾßÌåµÄʵÏÖ¡£Óû§¿ÉÒÔͨ¹ýÕâ¸ökeyÀ´ÒƳýʵÏÖ£¬¸ü³£ÓõÄÊÇÎÒÃÇÐèÒªµ÷ÓÃuseThis(String key)½Ó¿ÚÀ´Ö¸¶¨Ê¹ÓÃij¸ö¾ßÌåµÄʵÏÖ¡£
ÎÒÃDz¢Ã»ÓÐÖ±½ÓʹÓÃSDKManager£¬ÒòΪËüÊÇÒ»¸ö³éÏó·ºÐÍÀ࣬Òò´ËÎÒÃǶ¨ÒåÁËһЩ×ÓÀàÀ´¶Ô²»Í¬µÄʵÏÖ½øÐйÜÀí£¬ÕâЩ×ÓÀà¶¼Êǵ¥ÀýÀ࣬ÀýÈçLoginSDKManager£¬´úÂëÈçÏÂËùʾ¡£
public final class LoginSDKManager extends SDKManager<Loginable> {
// µ¥Àý¶ÔÏó
static LoginSDKManager sInstance = new LoginSDKManager();
private LoginSDKManager() {
}
// »ñÈ¡µ¥Àý¶ÔÏó
public static LoginSDKManager getInstance() {
return sInstance;
}
} |
ÔÚÓû§ÐèÒª¶ÔµÇ¼ϵͳ½øÐйÜÀíʱ£¬Í¨¹ýLoginSDKManager.getInstance()¾Í¿ÉÒÔ»ñÈ¡µ½¸ºÔð¹ÜÀíµÇ¼ϵͳµÄSDK Manager£¬´ËʱÓû§¿ÉÒÔͨ¹ýaddImpl(String key, T impl)¡¢useThis(String key)µÈ½Ó¿Ú¶ÔµÇ¼ϵͳ½øÐйÜÀí£¬Õâ¾Í¿ÉÒÔÁé»îʹÓÃÓû§×Ô¶¨ÒåµÄ×Óϵͳ¡£
ʾÀý
ÏÂÃæ»¹ÊÇÒÔÒ»¸öʾÀýÀ´ËµÃ÷ÎÊÌâ°É¡£ÔÚÓëÓû§¹µÍ¨µÄ¹ý³ÌÖУ¬ÎÒÃÇ·¢ÏֵǼģ¿éÊÇÓû§×Ô¶¨Òå¸ÅÂÊ×î¸ßµÄ×Óϵͳ¡£Í¨³£Çé¿öÏ£¬Óû§¿ÉÄÜÓÐ×Ô¼ºµÄÕË»§ÏµÍ³»òÕßʹÓÃÁ˵ÚÈý·½µÇ¼£¬´ËʱÓû§¾Í²»ÐèÒªÓÑÃË΢ÉçÇøSDKÖи½´øµÄµÇ¼ʵÏÖ£¬ÍêÈ«ÒÀÀµ×Ô¼ºµÄÕË»§ÏµÍ³»òÕ߯äËûµÚÈý·½µÇ¼SDKÀ´ÊµÏÖÒ»¸öµÇ¼ϵͳ¡£ÏÂÃæÎÒÃǾÍÒÔʵÏֵǼϵͳ£¨ÆäËû×ÓϵͳµÄ×Ô¶¨ÒåÔÀíÒ»Ñù£©À´ÑÝʾ×Ô¶¨Òå¹ý³Ì¡£ÔÚ¿ªÊ¼Ö®Ç°£¬ÎÒÃÇÐèÒª¶ÔµÇ¼µÄ³éÏó½Ó¿ÚLoginable½øÐÐÁ˽⡣´úÂëÈçÏÂËùʾ£º
public interface Loginable {
public void login();
public void logout();
public boolean isLogined();
} |
- login()£ºµÇ¼º¯Êý£¬Óû§ÐèÒªÔڵǼ³É¹¦ºó½«Óû§ÐÅÏ¢»Øµ÷¸øÓÑÃË΢ÉçÇøSDK£¨¾ßÌå¹ý³Ì¿ÉÒԲο¼ÓÑ΢ÉçÇø¼¯³ÉÎĵµ http://dev.umeng.com/wsq/android/detail-integration#1£©£»
- logout()£ºµÇ³öº¯Êý£¬×¢ÏúÓû§µÄµÇ¼¼´¿É£»
- isLogined()£ºÓû§ÊÇ·ñµÇ¼£¬·µ»Øtrue±íʾÒѵǼ£¬·ñÔòΪδµÇ¼¡£
΢ÉçÇøSDKÄÚ²¿Í¨¹ý³éÏóÁ˼¸¸ö¼òµ¥½Ó¿ÚÀ´¶¨ÒåµÇ¼ģ¿éµÄ¹¦ÄÜ£¬Óû§Í¨¹ýʵÏÖÕ⼸¸öº¯Êý¼´¿É¶¨ÖÆ×Ô¼ºµÄµÇ¼ϵͳ£¬×îºó½«ÊµÏÖ×¢Èëµ½SDK¼´¿É¡£ÀýÈ磬Èç¹ûÄãµÄÓ¦ÓÃÖÐÒѾÓÐÁË×Ô¼ºµÄÕË»§ÏµÍ³Âß¼£¬Äã¿ÉÒÔÔÚLoginableµÄ¼¸¸öº¯ÊýÖÐͨ¹ýµ÷ÓÃÄãµÄÕË»§ÏµÍ³Â߼ʵÏÖÕ⼸¸ö¹¦ÄÜ£»Èç¹ûÄãʹÓÃÁËÓÑÃËÉç»á»¯×é¼þÄÇôÄã¿ÉÒÔͨ¹ý¸ÃÉç»á»¯×é¼þµÄµÇ¼¡¢µÇ³ö¹¦ÄÜʵÏÖ¶ÔÓ¦µÄ¹¦ÄÜ£¬ÀýÈçÄã¿ÉÒÔÔÚlogin()º¯ÊýÖе÷ÓÃUMSocialService¶ÔÏóµÄdoOauthVerify(Context context¡¢SHARE_MEDIA platform¡¢UMAuthListener listener)½Ó¿ÚÀ´ÊµÏֵǼ¡£
Ò»¾ä»°¸ÅÀ¨¾ÍÊÇ£º×Ô¶¨ÒåÒ»¸öʵÏÖÁËLoginable½Ó¿ÚµÄÀ࣬ÔÚÕâ¸öÀàµÄ¸÷¸öº¯ÊýÖе÷ÓÃÄãÔÓеĵǼ¡¢µÇ³ö¡¢ÅжÏÊÇ·ñÒѵǼµÄº¯ÊýÀ´ÊµÏÖ¶ÔÓ¦µÄ¹¦ÄÜ¡£ÊµÏÖÁ˵ǼÀàÖ®ºó£¬Í¨¹ýLoginSDKManagerµÄaddImpl£¨String key, Loginable impl£©À´½«¸ÃʵÏÖ×¢Èëµ½SDKÖУ¬×îºóͨ¹ýLoginSDKManagerµÄuseThis£¨String key£©º¯ÊýÀ´Ö¸¶¨ÒªÊ¹ÓõĵǼʵÏÖ£¬Õâ¸ökey¾ÍÊÇaddImpl£¨String key¡¢Loginable impl£©ÖÐÉèÖõÄkey¡£
×Ô¶¨ÒåµÇ¼ÀàʾÀý´úÂëÈçÏÂ:
/**
* ÓÑÃËÉç»á»¯×é¼þµÄµÇ¼ʵÏÖ,ÕâÀï¿ÉÒÔÌæ»»³É×Ô¼ºµÄÕË»§ÏµÍ³¡¢µÚÈý·½µÇ¼µÈ£¬ÊµÏÖ¼¸¸ö½Ó¿Úº¯Êý¼´¿É¡£
*/
public class SocialLoginImpl implements Loginable {
@Override
public void login() {
// µÇ¼µÄ¾ßÌåʵÏÖ£¬¿ÉÒÔµ÷ÓÃÄã×Ô¼ºµÄµÇ¼´úÂë»òÕßµÚÈý·½SDKµÄµÇ¼º¯Êý
}
@Override
public void logout() {
// µÇ³öµÄ¾ßÌåʵÏÖ£¬¿ÉÒÔµ÷ÓÃÄã×Ô¼ºµÄµÇ¼´úÂë»òÕßµÚÈý·½SDKµÄµÇ¼º¯Êý
}
@Override
public boolean isLogined() {
// ¼ì²âÊÇ·ñµÇ¼
return true /* ´úÂëÊ¡ÂÔ */;
}
}
**×¢ÈëµÇ¼ʵÏÖ :**
// µÇ¼ϵͳ¹ÜÀíÆ÷
LoginSDKManager loginMgr = LoginSDKManager.getInstance() ;
// key
String clzKey = SocialLoginImpl.class.getName() ;
// ×¢ÈëʵÏÖ
loginMgr.addImpl(clzKey, new SocialLoginImpl());
// Ö¸¶¨Ê¹ÓõľßÌåʵÏÖ
loginMgr.useThis(clzKey);
ΪÁ˸ü¼òµ¥£¬Õâ¸ö¹ý³Ì±»ÎÒÃÇ·â×°µ½Ò»¸öº¯ÊýÖУ¬Ê¹ÓõĴúÂë×îºó¼ò»¯Îª :
// Ò»ÐдúÂë¸ã¶¨£¡Õâ¸öº¯Êý·â×°ÁËÉÏÊöËùÓеĴúÂë¡£
LoginSDKManager.getInstance().addAndUse(new SocialLoginImpl()) ; |
ͨ¹ýÕ⼸²½£¬µÇ¼ϵͳ¾Í±»Ìæ»»µôÁË¡£µ±Î¢ÉçÇøÐèÒªµÇ¼ʱ£¬Î¢ÉçÇøSDK¾Í»áͨ¹ýLoginSDKManager»ñÈ¡µ±Ç°Ê¹ÓõĵǼʵÏÖ£¬È»ºó´¥·¢login()º¯Êý£¬´Ëʱ¾Í»áÖ´ÐÐÄãµÄµÇ¼´úÂëÁË¡£µÇ¼³É¹¦Ö®ºó£¬Í¨¹ýlogin()º¯ÊýµÄ»Øµ÷listener£¨Õâ¸ö¼òµ¥Ê¾ÀýÖÐûÓиø³ö¸Ãlistener£¬¾ßÌå¿É²Î¿¼ÓÑÃË΢ÉçÇøÊ¹ÓÃÒÑÓÐÕË»§ÏµÍ³£©½«Óû§ÐÅÏ¢´«»Ø¸øÓÑÃËSDK£¬¾ÍÍê³ÉÁËÕû¸öµÇ¼¹ý³Ì¡£
ĿǰÓÑÃË΢ÉçÇøSDK»¹´¦ÔÚÄÚ²â½×¶Î£¨ÄÚ²âÉêÇëµØÖ·£ºhttp://wsq.umeng.com/£©£¬²»¹ýÒѾ¿ÉÒÔͶÈëʹÓá£ÒѾÓÐÒ»²¿·Ö¼¯³ÉÁËÓÑÃË΢ÉçÇøµÄAppÉÏÏߣ¬²¢ÇÒÔËÐÐÁ¼ºÃ¡£Ï£Íû±¾ÎÄÄÜÓпª·¢µÚÈý·½Android SDKµÄͬѧһЩ°ïÖú£¬Èÿª·¢ÖеĿӸüÉÙһЩ¡£
±¾ÎÄ×÷ÕߣººÎºì»Ô£¬Android¹¤³Ìʦ£¬ÏÖÈÎÖ°ÓÚÓÑÃË¡£ÀÖÓÚ·ÖÏí£¬ÈȰ®¿ªÔ´£¬¿ªÔ´ÏîÄ¿ÓÐAndroidEventBus¡¢android-tech-frontier¡¢AndroidÔ´ÂëÉè¼ÆÄ£Ê½·ÖÎö¡£ |