本文檔針對友盟分享(6.9.0)進行了功能封裝,完成的對於 文字、圖片、網頁 分享功能封裝,若有其它封裝要求請根據本文檔的封裝思路和友盟分享 api再進行功能封裝。
☺️話很少言,看看代碼吧。git
這部分太囉嗦,也沒有必要,須要的直接去官方文檔查閱 U-Share集成文檔github
這裏是對 AppDelegate
作了一個 Category 分類處理,在 AppDelegate 中好區別去其餘第三方平臺 SDK 註冊和配置來調用U-Share SDK
的調用。
這部分就很少說了,你們都懂,直接上代碼。web
AppDelegate+UMeng.h
```
#import "AppDelegate.h"api
AppDelegate+UMeng.m
此部分代碼過多隻展現部分邏輯,有須要請到 GDMiao/UmengEnclosed 下載查看。app
// 友盟系統配置和註冊 - (BOOL)umengapplication:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // UMConfigure 通用設置,請參考SDKs集成作統一初始化。 [UMConfigure initWithAppkey:@"你的UMAPPKey" channel:@"App Store"]; [UMConfigure setLogEnabled:YES]; // U-Share 平臺設置 [self configUSharePlatforms]; // 配置參考官方文檔 [self confitUShareSettings]; // 配置參考官方文檔 return YES; }
b. 系統回調(BOOL)umengapplication:(UIApplication )application handleOpenURL:(NSURL )url
{
BOOL result = [[UMSocialManager defaultManager] handleOpenURL:url];
if (!result) {
// 其餘如支付等SDK的回調
}
return result;
}
```ide
這部分是對友盟分享的關鍵封裝,定製了 文本字、圖片、網頁 三種分享,分鐘分享有固定的參數形式。url
UmengEnclosed.hcode
#pragma mark -- 定製Text類型分享面板預約義平臺 /** 文本分享 @param vc 分享方法調用的 Controller @param socialType 分享平臺選擇 @param sharetype 分享類型選擇 @param data 分享類型固定參數 data = @"text" */ - (void)customTextShareWithVC:(id)vc SocialType:(SocialType)socialType shareType:(ShareType)sharetype textData:(id)data; #pragma mark -- 定製Image類型分享面板預約義平臺 /** 圖片分享 @param vc 分享方法調用的 Controller @param socialType 分享平臺選擇 @param sharetype 分享類型選擇 @param data 分享類型固定參數 {"thumb":"thumbImgurl","original":@"originalImgurl"} */ - (void)customImageShareWithVC:(id)vc SocialType:(SocialType)socialType shareType:(ShareType)sharetype imgUrlData:(id)data; #pragma mark -- 定製Web類型分享面板預約義平臺 /** 網頁分享 @param vc 分享方法調用的 Controller @param socialType 分享平臺選擇 @param sharetype 分享類型選擇 @param data 分享類型固定參數 {"title":"","descr":"","weburl":@""} */ - (void)customWebShareWithVC:(id)vc SocialType:(SocialType)socialType shareType:(ShareType)sharetype webData:(id)data;
UmengEnclosed.morm
a. 此部分根據 SocialType
定製分享面板,根據ShareType
定製分享方法,data
根骨分享方法配置參數。對象
#pragma mark -- 定製本身的分享面板預約義平臺 /** 配置分享面板 和 分享類型 @param vc 分享方法調用的 Controller @param socialType 分享平臺選擇 @param sharetype 分享類型選擇 @param data 分享類型參數 */ - (void)shareMenuViewWithVC:(id)vc SocialType:(SocialType)socialType ShareType:(ShareType)sharetype date:(id)data { _vc = vc; if (socialType == SType_sina_wx_qq) { [UMSocialUIManager setPreDefinePlatforms:@[@(UMSocialPlatformType_Sina),@(UMSocialPlatformType_WechatSession),@(UMSocialPlatformType_WechatTimeLine),@(UMSocialPlatformType_QQ),@(UMSocialPlatformType_Qzone)]]; } else { //[UMSocialUIManager setPreDefinePlatforms:@[@(UMSocialPlatformType_Sina),@(UMSocialPlatformType_QQ),@(UMSocialPlatformType_WechatSession)]]; } __weak typeof(self) weakself = self; [UMSocialUIManager showShareMenuViewInWindowWithPlatformSelectionBlock:^(UMSocialPlatformType platformType, NSDictionary *userInfo) { // 根據獲取的platformType肯定所選平臺進行下一步操做 __strong typeof(self) strongself = weakself; switch (sharetype) { case ShareText: [strongself shareTextToPlatformType:platformType date:data]; // 根據友盟文檔定製方法 break; case SharePictures: [strongself shareImageToPlatformType:platformType date:data]; break; case SharePicturesAndText_sina: break; case ShareWebPages: [strongself shareWebPageToPlatformType:platformType date:data]; break; case ShareMusic: break; case ShareVideo: break; case ShareWeChatExpression: break; case ShareWeChatPrograms: break; default: break; } }]; }
b. 分享文本
// 分享文本 - (void)shareTextToPlatformType:(UMSocialPlatformType)platformType date:(id)data { NSString *text = data; //建立分享消息對象 UMSocialMessageObject *messageObject = [UMSocialMessageObject messageObject]; //設置文本 messageObject.text = text; //調用分享接口 [[UMSocialManager defaultManager] shareToPlatform:platformType messageObject:messageObject currentViewController:self.vc completion:^(id data, NSError *error) { if (error) { NSLog(@"************Share fail with error %@*********",error); }else{ NSLog(@"response data is %@",data); } }]; }
c.調用文本分享定製方法
/** 文本分享 @param vc 分享方法調用的 Controller @param socialType 分享平臺選擇 @param sharetype 分享類型選擇 @param data 分享類型固定參數 data = @"text" */ - (void)customTextShareWithVC:(id)vc SocialType:(SocialType)socialType shareType:(ShareType)sharetype textData:(id)data { [self shareMenuViewWithVC:vc SocialType:socialType ShareType:sharetype date:data]; }
d.不一一舉例詳情請參考 GDMiao/UmengEnclosed 下載查看。
#import "UmengEnclosed.h" - (IBAction)UmengSharedAciton:(id)sender { UmengEnclosed *umeng = [UmengEnclosed sharedUmengEnclosed]; [umeng customTextShareWithVC:self SocialType:SType_sina_wx_qq shareType:ShareText textData:@"OK"]; }
本次封裝只定制我我方 APP 的對應分享的部分功能,若有須要請更加文檔自行定製。
若是您能讀到點這裏我很是感謝,但願給一顆鼓勵的星星✨GDMiao/UmengEnclosed 。