友盟分享不單單是申請友盟分享的key就行了,在進行qq.微信的分享時還需要再額外申請key才行。
以下是官方給出的使用具體操作方法:
1. 分享流程介紹
1.1 設置友盟appkey
-
獲取友盟Appkey。如果你之前已經在友盟注冊了應用,獲得了Appkey,可以繼續使用之前獲得Appkey。
-
如果你尚未在友盟注冊賬號,需要先注冊,注冊之后登錄你的賬號,點擊
添加新應用
,完成新應用填寫之后,將進入應用管理頁面。在該頁面就能得到Appkey
。 -
在代碼中設置你的友盟Appkey,在
AppDelegate
文件內設置你的AppKey:
#import "UMSocial.h" - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [UMSocialData setAppKey:@"507fcab25270157b37000010"]; }
1.2 使用各種不同的分享接口
1.2.1 使用默認UI風格
- 適用人群:希望10分鍾集成從無到有實現分享的開發者
- 接口說明:調用該接口將先彈出分享平台選擇頁,選擇相應的平台將進行授權並分享
//注意:分享到微信好友、微信朋友圈、微信收藏、QQ空間、QQ好友、來往好友、來往朋友圈、易信好友、易信朋友圈、Facebook、Twitter、Instagram等平台需要參考各自的集成方法 //如果需要分享回調,請將delegate對象設置self,並實現下面的回調方法 [UMSocialSnsService presentSnsIconSheetView:self appKey:@"507fcab25270157b37000010" shareText:@"友盟社會化分享讓您快速實現分享等社會化功能,http://umeng.com/social" shareImage:[UIImage imageNamed:@"icon"] shareToSnsNames:[NSArray arrayWithObjects:UMShareToSina,UMShareToTencent,UMShareToRenren,nil] delegate:self];
現在會出現效果:
注意: 1. 支持分享編輯頁和授權頁面橫屏,必須要在出現列表頁面前設置:
[UMSocialConfig setSupportedInterfaceOrientations:UIInterfaceOrientationMaskLandscape];
2. 點擊每個平台后默認會進入內容編輯頁面,若想點擊后直接分享內容,可以實現下面的回調方法。
//彈出列表方法presentSnsIconSheetView需要設置delegate為self -(BOOL)isDirectShareInIconActionSheet { return YES; }
實現回調方法(可選):
-(void)didFinishGetUMSocialDataInViewController:(UMSocialResponseEntity *)response { //根據`responseCode`得到發送結果,如果分享成功 if(response.responseCode == UMSResponseCodeSuccess) { //得到分享到的微博平台名 NSLog(@"share to sns name is %@",[[response.data allKeys] objectAtIndex:0]); } }
1.2.2 使用分享API(自動授權后跳轉到內容編輯頁)
- 適用人群:較深耕細作型開發者,希望自定義分享列表,使用分享底層API,但仍使用友盟提供的分享編輯頁。
- 接口說明:如果已經授權,則直接跳轉到分享編輯頁,否則將進行授權操作然后再跳轉到分享編輯頁.相比presentSnsIconSheetView方法,該接口不需要彈出分享面板。該接口支持所有平台的分享(QQ好友,微信會有選擇好友的界面)。
(沒有授權則進入授權頁面,完成授權后再進入編輯頁面。)
#import "UMSocial.h" …… //注意:分享到微信好友、微信朋友圈、微信收藏、QQ空間、QQ好友、來往好友、來往朋友圈、易信好友、易信朋友圈、Facebook、Twitter、Instagram等平台需要參考各自的集成方法 [[UMSocialControllerService defaultControllerService] setShareText:@"分享內嵌文字" shareImage:[UIImage imageNamed:@"icon"] socialUIDelegate:self]; //設置分享內容和回調對象 [UMSocialSnsPlatformManager getSocialPlatformWithName:UMShareToSina].snsClickHandler(self,[UMSocialControllerService defaultControllerService],YES);
注意:若彈出橫屏的頁面,必須要在出現編輯頁面前設置
[UMSocialConfig setSupportedInterfaceOrientations:UIInterfaceOrientationMaskLandscape];
實現回調方法(可選):
-(void)didFinishGetUMSocialDataInViewController:(UMSocialResponseEntity *)response { //根據`responseCode`得到發送結果,如果分享成功 if(response.responseCode == UMSResponseCodeSuccess) { //得到分享到的微博平台名 NSLog(@"share to sns name is %@",[[response.data allKeys] objectAtIndex:0]); } }
1.2.3 直接分享底層接口(自動檢查授權)
- 適用人群:較深耕細作型開發者,希望自定義分享列表,希望授權和分享發生,使用分享底層API並自動授權。
- 直接發送微博到對應的微博平台,僅支持分享到一個平台,可以傳入文字、圖片、地理位置、url資源。圖片、地理位置和url資源可以設為nil。
只發送到一個微博平台,且該平台沒有先授權,SDK會自動打開授權頁面,授權完成之后再發送微博。
//注意:分享到微信好友、微信朋友圈、微信收藏、QQ空間、QQ好友、來往好友、來往朋友圈、易信好友、易信朋友圈、Facebook、Twitter、Instagram等平台需要參考各自的集成方法 [[UMSocialDataService defaultDataService] postSNSWithTypes:@[UMShareToSina] content:@"分享內嵌文字" image:nil location:nil urlResource:nil presentedController:self completion:^(UMSocialResponseEntity *response){ if (response.responseCode == UMSResponseCodeSuccess) { NSLog(@"分享成功!"); } }];
1.2.4 直接分享底層接口(授權 + 分享接口分離)
- 適用人群:深耕細作型開發者,希望完全自定義界面,只使用分享相關底層API實現分享。
- 接口說明:實現"授權+直接分享",你可以將授權接口(doOauthVerify)跟直接分享接口(directShare)結合起來使用。實現只需簡單的幾步:
步驟一:定義自己的分享面板
步驟二:實現用戶授權(首先判斷是否已經授權過,否則會重復授權)
//判斷是否授權 //注意:分享到微信好友、微信朋友圈、微信收藏、QQ空間、QQ好友、來往好友、來往朋友圈、易信好友、易信朋友圈、Facebook、Twitter、Instagram等平台需要參考各自的集成方法 [UMSocialAccountManager isOauthAndTokenNotExpired:UMShareToSina] //進入授權頁面 [UMSocialSnsPlatformManager getSocialPlatformWithName:UMShareToSina].loginClickHandler(self,[UMSocialControllerService defaultControllerService],YES,^(UMSocialResponseEntity *response){ if (response.responseCode == UMSResponseCodeSuccess) { //獲取微博用戶名、uid、token等 UMSocialAccountEntity *snsAccount = [[UMSocialAccountManager socialAccountDictionary] valueForKey:UMShareToSina]; NSLog(@"username is %@, uid is %@, token is %@",snsAccount.userName,snsAccount.usid,snsAccount.accessToken); //進入你的分享內容編輯頁面 } });
> 彩蛋:如果您已經自己使用其他SDK實現了分享,不希望用戶重復授權,友盟分享提供了兼容方法。沒有這種奇葩行為的用戶請忽略此段:
UMSocialAccountEntity *weiboAccount = [[UMSocialAccountEntity alloc] initWithPlatformName:UMShareToSina];
weiboAccount.usid = @"your usid"; weiboAccount.accessToken = @"your accesstoken"; // weiboAccount.openId = @"tencent weibo openId"; //騰訊微博賬戶必需設置openId //同步用戶信息 [UMSocialAccountManager postSnsAccount:weiboAccount completion:^(UMSocialResponseEntity *response){ if (response.responseCode == UMSResponseCodeSuccess) { //在本地緩存設置得到的賬戶信息 [UMSocialAccountManager setSnsAccount:weiboAccount]; //進入你自定義的分享內容編輯頁面或者使用我們的內容編輯頁面 }}];
**步驟三:調用直接分享API接口**
[[UMSocialDataService defaultDataService] postSNSWithTypes:@[UMShareToSina] content:@"分享內嵌文字" image:nil location:nil urlResource:nil presentedController:self completion:^(UMSocialResponseEntity *shareResponse){ if (shareResponse.responseCode == UMSResponseCodeSuccess) { NSLog(@"分享成功!"); } }];
設置支持的屏幕方向
支持分享編輯頁和授權頁面橫屏,必須要在出現列表頁面前進行下面,並在Xcode上的xxx_info.plist文件支持屏幕方向的字段'Supported interface orientations'增加相應的橫屏或者豎屏的枚舉值。
//根據你要支持的方向,UIInterfaceOrientationMaskLandscape設置成相應的方向 [UMSocialConfig setSupportedInterfaceOrientations:UIInterfaceOrientationMaskLandscape];
處理分享錯誤
用下面的代碼打開我們SDK在控制台的輸出后能看到相應的錯誤碼。
[UMSocialData openLog:YES];
1.3 各平台SSO(免登錄)配置
注意:使用各平台SSO分享,需要到各個微博平台申請自己的應用,綁定方法可以參考綁定第三方賬號到友盟后台。
1.3.1 步驟1. 添加URL scheme
在你的工程設置項,targets 一欄下,選中自己的 target,在 Info->URL Types 中添加 URL Schemes。如果使用的是Xcode3或更低版本,則需要在plist文件中添加。獲取各個平台appkey或者appid的方法可以參考分享詳細文檔綁定各個平台部分,各個平台的url scheme格式如下表:
平台 | url scheme設置格式 |
---|---|
新浪微博(使用微博原生SDK) | “wb”+新浪appkey,例如“wb126663232” |
新浪微博(非微博原生SDK) | “sina.”+友盟appkey,例如“sina.507fcab25270157b37000010” |
騰訊微博 | “wb”+你在友盟后台綁定的騰訊微博App Key,例如“wb801345073” |
微信 | 微信應用appId,例如“wxd9a39c7122aa6516”,微信詳細集成步驟參考微信集成方法 |
人人網 | “rm”+你的應用bundle id,例如“rmcom.umeng.SocialSDK” |
QQ、QQ空間 | 需要添加兩個URL schemes 1. “QQ”+騰訊QQ互聯應用appId轉換成十六進制(不足8位前面補0),例如“QQ05FC5B14”。生成十六進制方法:點擊鏈接,並在QQ互聯后台的URL schema中填入此字符串保持一致。2.“tencent“+騰訊QQ互聯應用Id,例如“tencent100424468" ,QQ及Qzone詳細集成步驟參考手機QQ集成方法 |
來往 | Identifier填“Laiwang”,URL Schemes填來往AppId.注意使用來往SDK后,Xcode工程other linker flags需要添加-ObjC參數 |
易信 | 易信Appkey,例如“yx35664bdff4db42c2b7be1e29390c1a06” |
默認使用iOS自帶的Facebook分享framework,在iOS 6以上有效,若要使用我們提供的facebook分享需要設置“fb”+facebook AppID,例如“fb1440390216179601”,詳細集成方法見集成facebook |
- 在AppDelegate文件集成相應的開關方法:
#import "UMSocial.h" - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { //設置友盟社會化組件appkey [UMSocialData setAppKey:UmengAppkey]; //設置微信AppId、appSecret,分享url [UMSocialWechatHandler setWXAppId:@"wxd930ea5d5a258f4f" appSecret:@"db426a9829e4b49a0dcac7b4162da6b6" url:@"http://www.umeng.com/social"]; //設置手機QQ 的AppId,Appkey,和分享URL,需要#import "UMSocialQQHandler.h" [UMSocialQQHandler setQQWithAppId:@"100424468" appKey:@"c7394704798a158208a74ab60104f0ba" url:@"http://www.umeng.com/social"]; //打開新浪微博的SSO開關,設置新浪微博回調地址,這里必須要和你在新浪微博后台設置的回調地址一致。若在新浪后台設置我們的回調地址,“http://sns.whalecloud.com/sina2/callback”,這里可以傳nil ,需要 #import "UMSocialSinaHandler.h" [UMSocialSinaHandler openSSOWithRedirectURL:@"http://sns.whalecloud.com/sina2/callback"]; //打開騰訊微博SSO開關,設置回調地址,需要 #import "UMSocialTencentWeiboHandler.h" [UMSocialTencentWeiboHandler openSSOWithRedirectUrl:@"http://sns.whalecloud.com/tencent2/callback"]; //打開人人網SSO開關,需要 #import "UMSocialRenrenHandler.h" [UMSocialRenrenHandler openSSO]; //設置易信Appkey和分享url地址,注意需要引用頭文件 #import UMSocialYixinHandler.h [UMSocialYixinHandler setYixinAppKey:@"yx35664bdff4db42c2b7be1e29390c1a06" url:@"http://www.umeng.com/social"]; //設置來往AppId,appscret,顯示來源名稱和url地址,注意需要引用頭文件 #import "UMSocialLaiwangHandler.h" [UMSocialLaiwangHandler setLaiwangAppId:@"8112117817424282305" appSecret:@"9996ed5039e641658de7b83345fee6c9" appDescription:@"友盟社會化組件" urlStirng:@"http://www.umeng.com/social"]; //設置Facebook,AppID和分享url,需要#import "UMSocialFacebookHandler.h" //默認使用iOS自帶的Facebook分享framework,在iOS 6以上有效。若要使用我們提供的facebook分享需要使用此開關: [UMSocialFacebookHandler setFacebookAppID:@"1440390216179601" shareFacebookWithURL:@"http://www.umeng.com/social"]; //默認使用iOS自帶的Twitter分享framework,在iOS 6以上有效。若要使用我們提供的twitter分享需要使用此開關: [UMSocialTwitterHandler openTwitter]; }
1.3.2 步驟2. 在AppDelegate文件里面實現下面三個系統回調方法
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { return [UMSocialSnsService handleOpenURL:url]; } - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { return [UMSocialSnsService handleOpenURL:url]; }
若你除了使用我們SDK外,還用了其他SDK,需要重寫此回調方法的,可以參考下面的寫法:
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { BOOL result = [UMSocialSnsService handleOpenURL:url]; if (result == FALSE) { //調用其他SDK,例如新浪微博SDK等 } return result; }
1.3.3 步驟3. 添加系統庫文件(不使用QQ空間和手機QQ的SSO功能可以忽略此步驟)
-
添加SDK依賴的系統庫文件。
在Xcode中打開工程配置文件,選擇“summary”一欄。在“summary”中選擇“Linked Frameworks and Libraries”一欄,點擊“+”圖標添加下面八個庫文件,分別是
- Security.framework
- libiconv.dylib
- SystemConfiguration.framework
- CoreGraphics.Framework
- libsqlite3.dylib
- CoreTelephony.framework
- libstdc++.dylib
- libz.dylib
2. 添加微信及朋友圈
2.1 注冊應用
使用微信分享首先需要在微信開放平台(點擊鏈接)申請, 按照要求填寫應用信息,審核通過后獲取到微信APPID和APPsecret
2.2 添加相關文件
在UMSocial_Sdk_Extra_Frameworks
目錄下,添加Wechat
文件夾到工程
2.3 添加微信
2.3.1 添加微信及朋友圈到分享列表
在你的程序APPdelegate入口方法添加下面的代碼
#import "UMSocialWechatHandler.h" //設置微信AppId、appSecret,分享url [UMSocialWechatHandler setWXAppId:@"wxd930ea5d5a258f4f" appSecret:@"db426a9829e4b49a0dcac7b4162da6b6" url:@"http://www.umeng.com/social"];
- 如果不添加上面的代碼,則分享列表中不會出現微信及朋友圈圖標
- URL必須為http鏈接,如果設置為nil則默認為友盟官網鏈接
2.3.2 配置URL schemes
在你的工程設置項,targets 一欄下,選中自己的 target,在 Info->URL Types 中添加 URL Schemes,添加xcode的url scheme為微信應用appId,例如“wxd9a39c7122aa6516”
2.3.3 添加系統回調
在APPdelegate中實現下面兩個系統回調方法:
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { return [UMSocialSnsService handleOpenURL:url]; } - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { return [UMSocialSnsService handleOpenURL:url]; }
2.4 設置分享內容
2.4.1 默認分享樣式
使用友盟默認分享UI頁面,分享到微信好友、微信朋友圈、微信收藏
[UMSocialSnsService presentSnsIconSheetView:self appKey:你的友盟應用Appkey shareText:@"友盟社會化分享讓您快速實現分享等社會化功能,www.umeng.com/social" shareImage:[UIImage imageNamed:@"icon.png"] shareToSnsNames:@[UMShareToWechatSession,UMShareToWechatTimeline,UMShareToWechatFavorite] delegate:self]; //實現回調方法(可選): -(void)didFinishGetUMSocialDataInViewController:(UMSocialResponseEntity *)response { //根據`responseCode`得到發送結果,如果分享成功 if(response.responseCode == UMSResponseCodeSuccess) { //得到分享到的微博平台名 NSLog(@"share to sns name is %@",[[response.data allKeys] objectAtIndex:0]); } }
2.4.2 自定義分享樣式
使用自定義分享面板,則在對於的微信分享按鈕中實現下面的方法
//使用UMShareToWechatSession,UMShareToWechatTimeline,UMShareToWechatFavorite分別代表微信好友、微信朋友圈、微信收藏 [[UMSocialDataService defaultDataService] postSNSWithTypes:@[UMShareToWechatSession] content:@"分享內嵌文字" image:nil location:nil urlResource:nil presentedController:self completion:^(UMSocialResponseEntity *response){ if (response.responseCode == UMSResponseCodeSuccess) { NSLog(@"分享成功!"); } }];
2.4.3 設置點擊分享內容跳轉鏈接
當分享消息類型為圖文時,點擊分享內容會跳轉到預設的鏈接,設置方法如下
[UMSocialData defaultData].extConfig.wechatSessionData.url = @"http://baidu.com";
如果是朋友圈,則替換平台參數名即可
[UMSocialData defaultData].extConfig.wechatTimelineData.url = @"http://baidu.com";
注意設置的鏈接必須為http鏈接
2.4.4 設置title
設置微信好友title方法為
[UMSocialData defaultData].extConfig.wechatSessionData.title = @"微信好友title";
設置微信朋友圈title方法替換平台參數名即可
[UMSocialData defaultData].extConfig.wechatTimelineData.title = @"微信朋友圈title";
微信朋友圈分享消息只顯示title
2.4.5 設置分享消息類型
微信分享消息類型分為圖文、純圖片、純文字、應用三種類型,默認分享類型為圖文分享,即展示分享文字及圖片縮略圖,點擊后跳轉到預設鏈接
純圖片分享類型方法為
[UMSocialData defaultData].extConfig.wxMessageType = UMSocialWXMessageTypeImage;
純圖片分享類型沒有文字,點擊圖片可以查看大圖
純文字分享類型方法為
[UMSocialData defaultData].extConfig.wxMessageType = UMSocialWXMessageTypeText;
純文字分享類型沒有圖片,點擊不會跳轉
應用分享類型方法
[UMSocialData defaultData].extConfig.wxMessageType = UMSocialWXMessageTypeApp;
應用分享類型點擊分享內容后跳轉到應用下載頁面,下載地址自動抓取開發者在微信開放平台填寫的應用地址,如果用戶已經安裝應用,則打開APP
3. 新浪微博分享
3.1 注冊應用
在微博開放平台(點擊鏈接)注冊應用,完整填寫相關應用信息,並且審核通過,未審核應用會遇到5034錯誤碼,詳情參考文檔
3.2 添加相關文件
解壓SDK壓縮包,將形如UMSocial_Sdk_x.x.x的文件夾拖入工程目錄
3.3 使用SSO授權方式
使用SSO授權方式,在用戶安裝了微博客戶端並登錄時,可以在分享過程中不需要輸入賬號密碼,直接通過微博客戶端授權,隨后進行網頁分享,免去了用戶輸入密碼的過程。 在用戶未安裝客戶端時,則自動跳轉到網頁授權方式,微博SSO授權我們提供微博原生SDK與非原生SDK兩種方式,選擇其中一種即可。
3.3.1 添加相關庫文件(使用微博原生SDK)
解壓下載文件夾,將SinaSSO
文件夾添加到工程。
在other linker flags增加-ObjC 選項,並添加ImageIO 系統framework
3.3.2 配置URL schemes(使用微博原生SDK)
在你的工程設置項,targets 一欄下,選中自己的 target,在 Info->URL Types 中添加 URL Schemes,格式為“wb”+新浪appkey,例如“wb126663232”
3.3.3 添加SSO授權開關(使用微博原生SDK)
在APPdelegate中集成新浪微博開關
#import "UMSocialSinaSSOHandler.h" //打開新浪微博的SSO開關,設置新浪微博回調地址,這里必須要和你在新浪微博后台設置的回調地址一致。若在新浪后台設置我們的回調地址,“http://sns.whalecloud.com/sina2/callback”,這里可以傳nil [UMSocialSinaSSOHandler openNewSinaSSOWithRedirectURL:@"http://sns.whalecloud.com/sina2/callback"];
回調URL必須和后台保持一致,否則會報錯redirect URL mismatch
安全域名設置必須為sns.whalecloud.com ,設置方法參考文檔
3.3.4 添加系統回調 (使用微博原生SDK)
在APPdelegate中實現下面的回調方法
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { return [UMSocialSnsService handleOpenURL:url]; } - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { return [UMSocialSnsService handleOpenURL:url]; }
3.3.5 添加相關庫文件(非微博原生SDK)
解壓下載文件夾,在UMSocial_Sdk_Extra_Frameworks
目錄下,把Sina
文件夾添加到工程。
3.3.6 配置URL schemes(非微博原生SDK)
在你的工程設置項,targets 一欄下,選中自己的 target,在 Info->URL Types 中添加 URL Schemes,格式為“sina.”+友盟appkey,例如“sina.507fcab25270157b37000010”
3.3.7 添加SSO授權開關(非微博原生SDK)
在APPdelegate中集成新浪微博開關
#import "UMSocialSinaHandler.h" //打開新浪微博的SSO開關,設置新浪微博回調地址,這里必須要和你在新浪微博后台設置的回調地址一致。若在新浪后台設置我們的回調地址,“http://sns.whalecloud.com/sina2/callback”,這里可以傳nil [UMSocialSinaHandler openSSOWithRedirectURL:@"http://sns.whalecloud.com/sina2/callback"];
回調URL必須和后台保持一致,否則會報錯redirect URL mismatch
安全域名設置必須為sns.whalecloud.com ,設置方法參考文檔
3.3.8 添加系統回調(非微博原生SDK)
在APPdelegate中實現下面的回調方法
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { return [UMSocialSnsService handleOpenURL:url]; } - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { return [UMSocialSnsService handleOpenURL:url]; }
3.4 設置分享內容
3.4.1 使用默認分享界面
使用友盟默認提供的分享面板,調用下面的代碼
[UMSocialSnsService presentSnsIconSheetView:self appKey:你的友盟應用Appkey shareText:@"友盟社會化分享讓您快速實現分享等社會化功能,http://umeng.com/social" shareImage:[UIImage imageNamed:@"icon.png"] shareToSnsNames:@[UMShareToSina] delegate:self]; //實現回調方法(可選): -(void)didFinishGetUMSocialDataInViewController:(UMSocialResponseEntity *)response { //根據`responseCode`得到發送結果,如果分享成功 if(response.responseCode == UMSResponseCodeSuccess) { //得到分享到的微博平台名 NSLog(@"share to sns name is %@",[[response.data allKeys] objectAtIndex:0]); } }
使用上面的接口,將使用友盟默認的分享面板以及分享編輯頁
3.4.2 使用自定義分享面板
使用自己定義的分享列表,但仍然使用友盟分享編輯頁,則使用下面的代碼
#import "UMSocial.h" [[UMSocialControllerService defaultControllerService] setShareText:@"分享內嵌文字" shareImage:[UIImage imageNamed:@"icon"] socialUIDelegate:self]; //設置分享內容和回調對象 [UMSocialSnsPlatformManager getSocialPlatformWithName:UMShareToSina].snsClickHandler(self,[UMSocialControllerService defaultControllerService],YES);
3.4.3 使用直接分享接口
直接分享接口,分享過程沒有分享編輯頁,適用於希望直接在后台進行分享或希望自定義分享編輯頁的開發者
[[UMSocialDataService defaultDataService] postSNSWithTypes:@[UMShareToSina] content:@"分享內嵌文字" image:nil location:nil urlResource:nil presentedController:self completion:^(UMSocialResponseEntity *shareResponse){ if (shareResponse.responseCode == UMSResponseCodeSuccess) { NSLog(@"分享成功!"); } }];
3.5 分享多媒體資源
3.5.1 分享URL圖片
分享過程中一次只能上傳一個圖片,因此URL圖片和本地圖片不可共存,當兩者都存在時會默認忽略本地圖片
3.5.1.1 使用默認分享界面分享URL圖片
[[UMSocialData defaultData].urlResource setResourceType:UMSocialUrlResourceTypeImage url:@"http://www.baidu.com/img/bdlogo.gif"]; //調用快速分享接口
在設置分享內容前調用即可
3.5.1.2 使用自定義界面分享URL圖片
UMSocialUrlResource *urlResource = [[UMSocialUrlResource alloc] initWithSnsResourceType:UMSocialUrlResourceTypeImage url:
@"http://www.baidu.com/img/bdlogo.gif"]; [[UMSocialDataService defaultDataService] postSNSWithTypes:@[UMShareToSina] content:@"分享內嵌文字" image:nil location:nil urlResource:urlResource presentedController:self completion:^(UMSocialResponseEntity *shareResponse){ if (shareResponse.responseCode == UMSResponseCodeSuccess) { NSLog(@"分享成功!"); } }];
3.5.2 分享本地gif圖片
分享本地gif圖片到各個開放平台,需要生成把本地gif圖片生成NSData
對象,作為各個分享方法的shareImage參數,例如快速分享接口如下寫法。
分享png、jpg圖片則只需要生成UIImage,傳入到shareImage參數,不能使用這種寫法。
//分享gif圖片 NSString *path = [[NSBundle mainBundle] pathForResource:@"picName" ofType:@"gif"]; NSData *gifData = [NSData dataWithContentsOfFile:path]; [UMSocialSnsService presentSnsIconSheetView:self appKey:UmengAppkey shareText:shareText shareImage:gifData shareToSnsNames:@[UMShareToSina] delegate:self]; //分享png、jpg圖片 [UMSocialSnsService presentSnsIconSheetView:self appKey:UmengAppkey shareText:shareText shareImage:[UIImage imageNamed:@"picName"] shareToSnsNames:@[UMShareToSina] delegate:self];
3.5.3 分享url音樂
分享URL音樂資源將UrlResourceType
設置為Music即可
[[UMSocialData defaultData].urlResource setResourceType:UMSocialUrlResourceTypeMusic url:@"http://music.huoxing.com/upload/20130330/1364651263157_1085.mp3"]; //調用快速分享接口
3.5.4 分享url視頻
分享URL視頻資源將UrlResourceType
設置為Video即可
[[UMSocialData defaultData].urlResource setResourceType:UMSocialUrlResourceTypeVideo url:@"http://v.youku.com/v_show/id_XNjQ1NjczNzEy.html?f=21207816&ev=2"]; //調用快速分享接口
3.6 關注官方微博
//usid為官方微博的uid [UMSocialConfig setFollowWeiboUids:@{UMShareToSina:@"12312312"}];
如果采用webview方式授權,則在授權頁面中顯示關注官方微博的復選框,如果采用SSO方式授權,則在分享編輯頁顯示關注微博復選框
如果希望直接靜默關注(不出現選項),則在代碼中添加下面的方法
//usid為官方微博的uid [[UMSocialDataService defaultDataService] requestAddFollow:UMShareToSina followedUsid:@[@"2937537507"] completion:nil];
4. 添加QQ及Qzone
4.1 注冊應用
使用QQ及Qzone分享首先在騰訊開放平台注冊應用,地址:http://open.qq.com 按照要求填寫,審核通過前需要添加測試賬號,否則會報錯110406或110404
4.2 添加相關文件
在UMSocial_Sdk_Extra_Frameworks
目錄下的,添加TencentOpenAPI
文件夾到工程 添加下面幾個系統framework
在Xcode中打開工程配置文件,選擇“summary”一欄。在“summary”中選擇“Linked Frameworks and Libraries”一欄,點擊“+”圖標添加下面八個庫文件,分別是
- Security.framework
- libiconv.dylib
- SystemConfiguration.framework
- CoreGraphics.Framework
- libsqlite3.dylib
- CoreTelephony.framework
- libstdc++.dylib
- libz.dylib
4.3 添加QQ及Qzone
4.3.1 添加QQ及Qzone到分享列表
在AppDelegate應用入口方法打開集成手機QQ、Qzone開關
//設置分享到QQ/Qzone的應用Id,和分享url 鏈接 #import "UMSocialQQHandler.h" [UMSocialQQHandler setQQWithAppId:@"100424468" appKey:@"c7394704798a158208a74ab60104f0ba" url:@"http://www.umeng.com/social"];
- 如果不添加上面的代碼,則分享列表中不會出現QQ及Qzone圖標
- URL必須為http鏈接,如果設置為nil則默認為友盟官網鏈接
4.3.2 配置URL schemes
在你的工程設置項,targets 一欄下,選中自己的 target,在 Info->URL Types 中添加 URL Schemes,設置Xcode的url scheme格式為“QQ”+騰訊QQ互聯應用appId轉換成十六進制(不足8位前面補0),例如“QQ05FC5B14”。並在QQ互聯后台的URL schema中填入此字符串保持一致。 額外設置 url schemes 的格式為"tencent"+騰訊QQ互聯應用appId,例如“tencent100424468”
如果 URL schemes 配置錯誤,則分享完成后無法返回應用
4.3.3 添加系統回調
在APPdelegate中實現下面的方法
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { return [UMSocialSnsService handleOpenURL:url]; } - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { return [UMSocialSnsService handleOpenURL:url]; }
4.4 設置分享內容
4.4.1 默認分享樣式
使用友盟默認分UI界面,添加下面代碼
[UMSocialSnsService presentSnsIconSheetView:self appKey:你的友盟應用Appkey shareText:@"友盟社會化分享讓您快速實現分享等社會化功能,www.umeng.com/social" shareImage:[UIImage imageNamed:@"icon.png"] shareToSnsNames:@[UMShareToQQ,UMShareToQzone] delegate:self]; //實現回調方法(可選): -(void)didFinishGetUMSocialDataInViewController:(UMSocialResponseEntity *)response { //根據`responseCode`得到發送結果,如果分享成功 if(response.responseCode == UMSResponseCodeSuccess) { //得到分享到的微博平台名 NSLog(@"share to sns name is %@",[[response.data allKeys] objectAtIndex:0]); } }
Qzone分享文字與圖片缺一不可,否則會出現錯誤碼10001
4.4.2 自定義分享樣式
使用自定義分享UI界面,則在對應的QQ分享按鈕中實現下面的方法
[[UMSocialDataService defaultDataService] postSNSWithTypes:@[UMShareToQQ] content:@"分享文字" image:nil location:nil urlResource:nil presentedController:self completion:^(UMSocialResponseEntity *response){ if (response.responseCode == UMSResponseCodeSuccess) { NSLog(@"分享成功!"); } }];
Qzone分享則替換平台參數為Qzone即可
[[UMSocialDataService defaultDataService] postSNSWithTypes:@[UMShareToQzone] content:@"分享文字" image:nil location:nil urlResource:nil presentedController:self completion:^(UMSocialResponseEntity *response){ if (response.responseCode == UMSResponseCodeSuccess) { NSLog(@"分享成功!"); } }];
Qzone分享文字與圖片缺一不可,否則會出現錯誤碼10001
4.4.3 設置點擊分享內容跳轉鏈接
QQ設置點擊分享內容跳轉鏈接調用下面的方法
[UMSocialData defaultData].extConfig.qqData.url = @"http://baidu.com";
Qzone設置點擊分享內容跳轉鏈接替換平台參數名即可
[UMSocialData defaultData].extConfig.qzoneData.url = @"http://baidu.com";
4.4.4 設置title
QQ設置title方法為
[UMSocialData defaultData].extConfig.qqData.title = @"QQ分享title";
Qzone設置title方法將平台參數名替換即可
[UMSocialData defaultData].extConfig.qzoneData.title = @"Qzone分享title";
4.4.5 設置分享消息類型
QQ分享消息類型分為圖文、純圖片,QQ空間分享只支持圖文分享(圖片文字缺一不可)
QQ分享消息默認為圖文類型,設置純圖片類型方法為
[UMSocialData defaultData].extConfig.qqData.qqMessageType = UMSocialQQMessageTypeImage;
在調用分享代碼前調用即可
5. 配置URL schemes
5.1 為什么要配置 URL schemes
URL schemes 和跳出應用后返回應用的邏輯相關,因此如果使用了SSO授權功能或QQ、微信、webview方式的Facebook,就必須配置URL schemes,否則跳出應用后將無法返回
5.2 如何設置 URL schemes
在你的工程設置項,targets 一欄下,選中自己的 target,在 Info->URL Types 中添加 URL Schemes。如果使用的是Xcode3或更低版本,則需要在plist文件中添加。獲取各個平台appkey或者appid的方法可以參考分享詳細文檔綁定各個平台部分,各個平台的url scheme格式如下表:
平台 | url scheme設置格式 |
---|---|
新浪微博 | “sina.”+友盟appkey,例如“sina.507fcab25270157b37000010” |
騰訊微博 | “wb”+你在友盟后台綁定的騰訊微博App Key,例如“wb801345073” |
微信 | 微信應用appId,例如“wxd9a39c7122aa6516”,微信詳細集成步驟參考微信集成方法 |
人人網 | “rm”+你的應用bundle id,例如“rmcom.umeng.SocialSDK” |
QQ、QQ空間 | 需要添加兩個URL schemes 1. “QQ”+騰訊QQ互聯應用appId轉換成十六進制(不足8位前面補0),例如“QQ05FC5B14”。生成十六進制方法:點擊鏈接,並在QQ互聯后台的URL schema中填入此字符串保持一致。2.“tencent“+騰訊QQ互聯應用Id,例如“tencent100424468" ,QQ及Qzone詳細集成步驟參考手機QQ集成方法 |
來往 | Identifier填“Laiwang”,URL Schemes填來往AppId.注意使用來往SDK后,Xcode工程other linker flags需要添加-ObjC參數 |
易信 | 易信Appkey,例如“yx35664bdff4db42c2b7be1e29390c1a06” |
默認使用iOS自帶的Facebook分享framework,在iOS 6以上有效,若要使用我們提供的facebook分享需要設置“fb”+facebook AppID,例如“fb1440390216179601”,詳細集成方法見集成facebook |
6. 添加SSO授權
6.1 SSO授權簡介
SSO指單點登錄,當用戶安裝了對應第三方客戶端且登錄時,可以在登錄時免去輸入賬號密碼的過程,簡化分享流程,目前友盟支持新浪、騰訊微博、人人網、QQ及Qzone平台,由於騰訊微博和人人網官方沒有提供64位SDK,因此選擇友盟64位版本下載時無法使用騰訊微博及人人網SSO功能。
6.2 新浪微博SSO
使用SSO授權方式,在用戶安裝了微博客戶端並登錄時,可以在分享過程中不需要輸入賬號密碼,直接通過微博客戶端授權,隨后進行網頁分享,免去了用戶輸入密碼的過程。 在用戶未安裝客戶端時,則自動跳轉到網頁授權方式,微博SSO授權我們提供微博原生SDK與非原生SDK兩種方式,選擇其中一種即可。
6.2.1 添加相關庫文件(使用微博原生SDK)
解壓下載文件夾,將SinaSSO
文件夾添加到工程。
在other linker flags增加-ObjC 選項,並添加ImageIO 系統framework
6.2.2 配置URL schemes(使用微博原生SDK)
在你的工程設置項,targets 一欄下,選中自己的 target,在 Info->URL Types 中添加 URL Schemes,格式為“wb”+新浪appkey,例如“wb126663232”
6.2.3 添加SSO授權開關(使用微博原生SDK)
在APPdelegate中集成新浪微博開關
#import "UMSocialSinaSSOHandler.h" //打開新浪微博的SSO開關,設置新浪微博回調地址,這里必須要和你在新浪微博后台設置的回調地址一致。若在新浪后台設置我們的回調地址,“http://sns.whalecloud.com/sina2/callback”,這里可以傳nil [UMSocialSinaSSOHandler openNewSinaSSOWithRedirectURL:@"http://sns.whalecloud.com/sina2/callback"];
回調URL必須和后台保持一致,否則會報錯redirect URL mismatch
安全域名設置必須為sns.whalecloud.com ,設置方法參考文檔
6.2.4 添加系統回調 (使用微博原生SDK)
在APPdelegate中實現下面的回調方法
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { return [UMSocialSnsService handleOpenURL:url]; } - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { return [UMSocialSnsService handleOpenURL:url]; }
6.2.5 添加相關庫文件(非微博原生SDK)
解壓下載文件夾,在UMSocial_Sdk_Extra_Frameworks
目錄下,把Sina
文件夾添加到工程。
6.2.6 配置URL schemes(非微博原生SDK)
在你的工程設置項,targets 一欄下,選中自己的 target,在 Info->URL Types 中添加 URL Schemes,格式為“sina.”+友盟appkey,例如“sina.507fcab25270157b37000010”
6.2.7 添加SSO授權開關(非微博原生SDK)
在APPdelegate中集成新浪微博開關
#import "UMSocialSinaHandler.h" //打開新浪微博的SSO開關,設置新浪微博回調地址,這里必須要和你在新浪微博后台設置的回調地址一致。若在新浪后台設置我們的回調地址,“http://sns.whalecloud.com/sina2/callback”,這里可以傳nil [UMSocialSinaHandler openSSOWithRedirectURL:@"http://sns.whalecloud.com/sina2/callback"];
回調URL必須和后台保持一致,否則會報錯redirect URL mismatch
安全域名設置必須為sns.whalecloud.com ,設置方法參考文檔
6.2.8 添加系統回調(非微博原生SDK)
在APPdelegate中實現下面的回調方法
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { return [UMSocialSnsService handleOpenURL:url]; } - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { return [UMSocialSnsService handleOpenURL:url]; }
6.3 騰訊微博SSO
6.3.1 添加相關庫文件
解壓下載文件夾,在UMSocial_Sdk_Extra_Frameworks
目錄下,把TencentWeibo
文件夾添加到工程。
6.3.2 配置URL schemes
在你的工程設置項,targets 一欄下,選中自己的 target,在 Info->URL Types 中添加 URL Schemes,格式為"wb"+你的騰訊微博App Key,例如“wb801345073”
6.3.3 添加SSO授權開關
在你的Appdelegate入口方法,添加下面的代碼
//打開騰訊微博SSO開關,設置回調地址 [UMSocialTencentWeiboHandler openSSOWithRedirectUrl:@"http://sns.whalecloud.com/tencent2/callback"];
6.3.4 添加系統回調
在APPdelegate中實現下面的回調方法
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { return [UMSocialSnsService handleOpenURL:url]; } - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { return [UMSocialSnsService handleOpenURL:url]; }
6.4 人人網SSO
6.4.1 添加相關庫文件
解壓下載文件夾,在UMSocial_Sdk_Extra_Frameworks
目錄下,把Renren
文件夾添加到工程。
6.4.2 配置URL schemes
在你的工程設置項,targets 一欄下,選中自己的 target,在 Info->URL Types 中添加 URL Schemes,格式為“rm”+你的應用bundle id,例如“rmcom.umeng.SocialSDK”
6.4.3 添加SSO授權開關
在你的Appdelegate入口方法,添加下面的代碼
//打開人人網SSO開關 [UMSocialRenrenHandler openSSO];
6.4.4 添加系統回調
在APPdelegate中實現下面的回調方法
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { return [UMSocialSnsService handleOpenURL:url]; } - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { return [UMSocialSnsService handleOpenURL:url]; }
7. 第三方登錄
7.1 第三方登錄概述
第三方登錄主要用於簡化用戶登錄流程,通過用戶擁有的微博、QQ、微信等第三方賬號進行登錄並且構建APP自己的登錄賬號體系。
實現第三方登錄主要通過下面兩步:
- 在第三方平台完成授權
- 獲取第三方平台的accesstoken信息及用戶資料
7.1.1 第三方登錄支持的平台
目前友盟社會化組件支持的第三方登錄平台為:新浪微博、微信、QQ、QQ空間、騰訊微博、人人網、豆瓣、Facebook、Twitter
7.2 新浪微博登錄
在新浪微博登錄按鈕中實現下面的方法
UMSocialSnsPlatform *snsPlatform = [UMSocialSnsPlatformManager getSocialPlatformWithName:UMShareToSina];
snsPlatform.loginClickHandler(self,[UMSocialControllerService defaultControllerService],YES,^(UMSocialResponseEntity *response){ // 獲取微博用戶名、uid、token等 if (response.responseCode == UMSResponseCodeSuccess) { UMSocialAccountEntity *snsAccount = [[UMSocialAccountManager socialAccountDictionary] valueForKey:UMShareToSina]; NSLog(@"username is %@, uid is %@, token is %@ url is %@",snsAccount.userName,snsAccount.usid,snsAccount.accessToken,snsAccount.iconURL); }});
在授權完成后調用獲取用戶信息的方法
//獲取accestoken以及新浪用戶信息,得到的數據在回調Block對象形參respone的data屬性 [[UMSocialDataService defaultDataService] requestSnsInformation:UMShareToSina completion:^(UMSocialResponseEntity *response){ NSLog(@"SnsInformation is %@",response.data); }];
獲取好友列表調用下面的方法,由於新浪官方限制,獲取好友列表只能獲取到30%好友
[[UMSocialDataService defaultDataService] requestSnsFriends:UMShareToSina completion:^(UMSocialResponseEntity *response){
NSLog(@"SnsFriends is %@",response.data); }];
刪除授權調用下面的方法
[[UMSocialDataService defaultDataService] requestUnOauthWithType:UMShareToSina completion:^(UMSocialResponseEntity *response){
NSLog(@"response is %@",response); }];
7.3 QQ及Qzone登錄
QQ登錄只支持SSO登錄方式,必須具備手機QQ客戶端,Qzone默認調用SSO登錄
添加配置文件參考文檔:添加QQ及Qzone,添加相關庫文件,配置URL schemes及添加系統回調
在AppDelegate應用入口方法添加下面的方法
//設置分享到QQ/Qzone的應用Id,和分享url 鏈接 #import "UMSocialQQHandler.h" [UMSocialQQHandler setQQWithAppId:@"100424468" appKey:@"c7394704798a158208a74ab60104f0ba" url:@"http://www.umeng.com/social"];
在QQ登錄按鈕中實現下面的方法
UMSocialSnsPlatform *snsPlatform = [UMSocialSnsPlatformManager getSocialPlatformWithName:UMShareToQQ];
snsPlatform.loginClickHandler(self,[UMSocialControllerService defaultControllerService],YES,^(UMSocialResponseEntity *response){ // 獲取微博用戶名、uid、token等 if (response.responseCode == UMSResponseCodeSuccess) { UMSocialAccountEntity *snsAccount = [[UMSocialAccountManager socialAccountDictionary] valueForKey:UMShareToQQ]; NSLog(@"username is %@, uid is %@, token is %@ url is %@",snsAccount.userName,snsAccount.usid,snsAccount.accessToken,snsAccount.iconURL); }});
在Qzone登錄按鈕中實現下面的方法
UMSocialSnsPlatform *snsPlatform = [UMSocialSnsPlatformManager getSocialPlatformWithName:UMShareToQzone];
snsPlatform.loginClickHandler(self,[UMSocialControllerService defaultControllerService],YES,^(UMSocialResponseEntity *response){ // 獲取微博用戶名、uid、token等 if (response.responseCode == UMSResponseCodeSuccess) { UMSocialAccountEntity *snsAccount = [[UMSocialAccountManager socialAccountDictionary] valueForKey:UMShareToQzone]; NSLog(@"username is %@, uid is %@, token is %@ url is %@",snsAccount.userName,snsAccount.usid,snsAccount.accessToken,snsAccount.iconURL); }});
在授權完成后調用獲取用戶信息的方法
//獲取accestoken以及QQ用戶信息,得到的數據在回調Block對象形參respone的data屬性 [[UMSocialDataService defaultDataService] requestSnsInformation:UMShareToQQ completion:^(UMSocialResponseEntity *response){ NSLog(@"SnsInformation is %@",response.data); }];
Qzone將UMShareToQQ
替換為UMShareToQzone
即可,獲取QQ用戶信息時,獲取的頭像為Qzone頭像
7.4 微信登錄
添加配置文件參考文檔:添加微信及朋友圈,添加相關庫文件,配置URL schemes及添加系統回調
- 注意微信登錄必須先在微信開放平台申請微信登錄權限
在你的程序APPdelegate入口方法添加下面的代碼
#import "UMSocialWechatHandler.h" //設置微信AppId、appSecret,分享url [UMSocialWechatHandler setWXAppId:@"wxd930ea5d5a258f4f" appSecret:@"db426a9829e4b49a0dcac7b4162da6b6" url:@"http://www.umeng.com/social"];
在微信登錄按鈕中實現下面的方法
UMSocialSnsPlatform *snsPlatform = [UMSocialSnsPlatformManager getSocialPlatformWithName:UMShareToWechatSession];
snsPlatform.loginClickHandler(self,[UMSocialControllerService defaultControllerService],YES,^(UMSocialResponseEntity *response){ if (response.responseCode == UMSResponseCodeSuccess) { UMSocialAccountEntity *snsAccount = [[UMSocialAccountManager socialAccountDictionary]valueForKey:UMShareToWechatSession]; NSLog(@"username is %@, uid is %@, token is %@ url is %@",snsAccount.userName,snsAccount.usid,snsAccount.accessToken,snsAccount.iconURL); } });
在授權完成后調用獲取用戶信息的方法
//得到的數據在回調Block對象形參respone的data屬性 [[UMSocialDataService defaultDataService] requestSnsInformation:UMShareToWechatsession completion:^(UMSocialResponseEntity *response){ NSLog(@"SnsInformation is %@",response.data); }];
8. 添加其他國內分享平台
8.1 國內分享平台簡介
友盟社會化組件支持的國內分享平台包括:新浪、微信及朋友圈、QQ及Qzone、騰訊微博、人人網、豆瓣、短信、郵件、易信和來往
8.2 添加騰訊微博
8.2.1 使用默認分享界面
使用友盟默認提供的分享面板,調用下面的代碼
[UMSocialSnsService presentSnsIconSheetView:self appKey:你的友盟應用Appkey shareText:@"友盟社會化分享讓您快速實現分享等社會化功能,http://umeng.com/social" shareImage:[UIImage imageNamed:@"icon.png"] shareToSnsNames:@[UMShareToTencent] delegate:self]; //實現回調方法(可選): -(void)didFinishGetUMSocialDataInViewController:(UMSocialResponseEntity *)response { //根據`responseCode`得到發送結果,如果分享成功 if(response.responseCode == UMSResponseCodeSuccess) { //得到分享到的微博平台名 NSLog(@"share to sns name is %@",[[response.data allKeys] objectAtIndex:0]); } }
8.2.2 使用自定義分享界面
自定義分享樣式,可以在自己定義的分享按鈕中實現下面的方法
[[UMSocialDataService defaultDataService] postSNSWithTypes:@[UMShareToTencent] content:@"分享內嵌文字" image:nil location:nil urlResource:nil presentedController:self completion:^(UMSocialResponseEntity *shareResponse){ if (shareResponse.responseCode == UMSResponseCodeSuccess) { NSLog(@"分享成功!"); } }];
8.3 添加人人網
8.3.1 使用默認分享界面
使用友盟默認提供的分享面板,調用下面的代碼
[UMSocialSnsService presentSnsIconSheetView:self appKey:你的友盟應用Appkey shareText:@"友盟社會化分享讓您快速實現分享等社會化功能,http://umeng.com/social" shareImage:[UIImage imageNamed:@"icon.png"] shareToSnsNames:@[UMShareToRenren] delegate:self]; //實現回調方法(可選): -(void)didFinishGetUMSocialDataInViewController:(UMSocialResponseEntity *)response { //根據`responseCode`得到發送結果,如果分享成功 if(response.responseCode == UMSResponseCodeSuccess) { //得到分享到的微博平台名 NSLog(@"share to sns name is %@",[[response.data allKeys] objectAtIndex:0]); } }
8.3.2 使用自定義分享界面
自定義分享樣式,可以在自己定義的分享按鈕中實現下面的方法
[[UMSocialDataService defaultDataService] postSNSWithTypes:@[UMShareToRenren] content:@"分享內嵌文字" image:nil location:nil urlResource:nil presentedController:self completion:^(UMSocialResponseEntity *shareResponse){ if (shareResponse.responseCode == UMSResponseCodeSuccess) { NSLog(@"分享成功!"); } }];
8.4 添加豆瓣、短信、郵件
在默認分享界面下,直接在分享平台的數組中傳遞平台參數名即可
[UMSocialSnsService presentSnsIconSheetView:self appKey:你的友盟應用Appkey shareText:@"友盟社會化分享讓您快速實現分享等社會化功能,http://umeng.com/social" shareImage:[UIImage imageNamed:@"icon.png"] shareToSnsNames:@[UMShareToDouban,UMShareToEmail,UMShareToSms] delegate:self]; //實現回調方法(可選): -(void)didFinishGetUMSocialDataInViewController:(UMSocialResponseEntity *)response { //根據`responseCode`得到發送結果,如果分享成功 if(response.responseCode == UMSResponseCodeSuccess) { //得到分享到的微博平台名 NSLog(@"share to sns name is %@",[[response.data allKeys] objectAtIndex:0]); } }
8.5 添加易信
8.5.1 添加相關文件
解壓下載文件夾,在UMSocial_Sdk_Extra_Frameworks
目錄下,把YiXin
文件夾添加到工程
8.5.2 配置URL schemes 及系統回調
在你的工程設置項,targets 一欄下,選中自己的 target,在 Info->URL Types 中添加 URL Schemes,格式為易信Appkey,例如“yx35664bdff4db42c2b7be1e29390c1a06”
在APPdelegate中實現下面的回調方法
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { return [UMSocialSnsService handleOpenURL:url]; } - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { return [UMSocialSnsService handleOpenURL:url]; }
8.5.3 添加易信及朋友圈到分享列表
在APPdelegate中添加下面的方法
//設置易信Appkey和分享url地址,注意需要引用頭文件 #import UMSocialYixinHandler.h [UMSocialYixinHandler setYixinAppKey:@"yx35664bdff4db42c2b7be1e29390c1a06" url:@"http://www.umeng.com/social"];
8.5.4 設置分享內容
使用默認分享界面調用下面的方法,其中UMShareToYXSession
代表易信好友,UMShareToYXTimeline
代表易信朋友圈
[UMSocialSnsService presentSnsIconSheetView:self appKey:你的友盟應用Appkey shareText:@"友盟社會化分享讓您快速實現分享等社會化功能,www.umeng.com/social" shareImage:[UIImage imageNamed:@"icon.png"] shareToSnsNames:@[UMShareToYXSession,UMShareToYXTimeline] delegate:self]; //實現回調方法(可選): -(void)didFinishGetUMSocialDataInViewController:(UMSocialResponseEntity *)response { //根據`responseCode`得到發送結果,如果分享成功 if(response.responseCode == UMSResponseCodeSuccess) { //得到分享到的微博平台名 NSLog(@"share to sns name is %@",[[response.data allKeys] objectAtIndex:0]); } }
使用自定義分享界面,則在對應的按鈕中實現下面的方法
[[UMSocialDataService defaultDataService] postSNSWithTypes:@[UMShareToYXSession] content:@"分享文字" image:nil location:nil urlResource:nil presentedController:self completion:^(UMSocialResponseEntity *response){ if (response.responseCode == UMSResponseCodeSuccess) { NSLog(@"分享成功!"); } }];
上述代碼為分享到易信好友,易信朋友圈將平台參數UMShareToYXSession
替換為UMShareToYXTimeline
即可
8.6 添加來往
8.6.1 添加相關文件
解壓下載文件夾,在UMSocial_Sdk_Extra_Frameworks
目錄下,把LaiWang
文件夾添加到工程
8.6.2 配置URL schemes 及系統回調
在你的工程設置項,targets 一欄下,選中自己的 target,在 Info->URL Types 中添加 URL Schemes,Identifier填“Laiwang”,URL Schemes填來往AppId.注意使用來往SDK后,Xcode工程other linker flags需要添加-ObjC參數
在APPdelegate中實現下面的回調方法
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { return [UMSocialSnsService handleOpenURL:url]; } - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { return [UMSocialSnsService handleOpenURL:url]; }
8.6.3 添加來往及來往動態到分享列表
在APPdelegate中添加下面的方法
//設置來往AppId,appscret,顯示來源名稱和url地址,注意需要引用頭文件 #import "UMSocialLaiwangHandler.h" [UMSocialLaiwangHandler setLaiwangAppId:@"8112117817424282305" appSecret:@"9996ed5039e641658de7b83345fee6c9" appDescription:@"友盟社會化組件" urlStirng:@"http://www.umeng.com/social"];
8.6.4 設置分享內容
使用默認分享界面調用下面的方法,其中UMShareToLWSession
代表來往好友,UMShareToLWTimeline
代表來往動態
[UMSocialSnsService presentSnsIconSheetView:self appKey:你的友盟應用Appkey shareText:@"友盟社會化分享讓您快速實現分享等社會化功能,www.umeng.com/social" shareImage:[UIImage imageNamed:@"icon.png"] shareToSnsNames:@[UMShareToLWSession,UMShareToLWTimeline] delegate:self]; //實現回調方法(可選): -(void)didFinishGetUMSocialDataInViewController:(UMSocialResponseEntity *)response { //根據`responseCode`得到發送結果,如果分享成功 if(response.responseCode == UMSResponseCodeSuccess) { //得到分享到的微博平台名 NSLog(@"share to sns name is %@",[[response.data allKeys] objectAtIndex:0]); } }
使用自定義分享界面,則在對應的按鈕中實現下面的方法
[[UMSocialDataService defaultDataService] postSNSWithTypes:@[UMShareToLWSession] content:@"分享文字" image:nil location:nil urlResource:nil presentedController:self completion:^(UMSocialResponseEntity *response){ if (response.responseCode == UMSResponseCodeSuccess) { NSLog(@"分享成功!"); } }];
上述代碼為分享到來往好友,來往動態將平台參數UMShareToLWSession
替換為UMShareToLWTimeline
即可
9. 添加國外分享平台
9.1 國外分享平台簡介
友盟社會化組件支持多個國外分享平台,包括Facebook、Twitter、Instagram、Line、Whatsapp、Tumblr,其中Facebook和Twitter分享支持應用內網頁分享,其余平台僅支持跳轉客戶端分享。
9.2 添加Facebook
9.2.1 使用系統自帶Facebook分享
使用系統自帶Facebook需要先在手機上設置Facebook賬號
使用默認分享界面調用下面的代碼
[UMSocialSnsService presentSnsIconSheetView:self appKey:你的友盟應用Appkey shareText:@"友盟社會化分享讓您快速實現分享等社會化功能,www.umeng.com/social" shareImage:[UIImage imageNamed:@"icon.png"] shareToSnsNames:@[UMShareToFacebook] delegate:self]; //實現回調方法(可選): -(void)didFinishGetUMSocialDataInViewController:(UMSocialResponseEntity *)response { //根據`responseCode`得到發送結果,如果分享成功 if(response.responseCode == UMSResponseCodeSuccess) { //得到分享到的微博平台名 NSLog(@"share to sns name is %@",[[response.data allKeys] objectAtIndex:0]); } }
使用自定義分享界面在對應的Facebook分享按鈕中實現下面的方法
[[UMSocialDataService defaultDataService] postSNSWithTypes:@[UMShareToFacebook] content:@"分享文字" image:nil location:nil urlResource:nil presentedController:self completion:^(UMSocialResponseEntity *response){ if (response.responseCode == UMSResponseCodeSuccess) { NSLog(@"分享成功!"); } }];
9.2.2 使用應用內網頁分享
9.2.2.1 注冊應用
在Facebook開放平台(點擊鏈接) 注冊你的facebook應用,注意在你的應用Native iOS App填寫Bundle ID
9.2.2.2 添加相關庫文件
解壓下載文件夾,在UMSocial_Sdk_Extra_Frameworks
目錄下,把Facebook
文件夾添加到工程
9.2.2.3 添加URL schemes 及系統回調
在你的工程設置項,targets 一欄下,選中自己的 target,在 Info->URL Types 中添加 URL Schemes,設置Xcode的url scheme格式為“fb”+facebook AppID,例如“fb1440390216179601”
在APPdelegate中實現下面的回調
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { return [UMSocialSnsService handleOpenURL:url]; } - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { return [UMSocialSnsService handleOpenURL:url]; }
9.2.2.4 添加Facebook
在AppDelegate的入口方法增加下面代碼
//設置Facebook,AppID和分享url,需要#import "UMSocialFacebookHandler.h" [UMSocialFacebookHandler setFacebookAppID:@"1440390216179601" shareFacebookWithURL:@"http://www.umeng.com/social"];
設置分享內容方法和調用系統Facebook分享相同
9.3 添加Twitter
9.3.1 使用系統自帶Twitter分享
使用系統自帶Twitter分享需要先在手機中設置Twitter賬戶
使用默認分享界面分享調用下面的代碼
[UMSocialSnsService presentSnsIconSheetView:self appKey:你的友盟應用Appkey shareText:@"友盟社會化分享讓您快速實現分享等社會化功能,www.umeng.com/social" shareImage:[UIImage imageNamed:@"icon.png"] shareToSnsNames:@[UMShareToTwitter] delegate:self]; //實現回調方法(可選): -(void)didFinishGetUMSocialDataInViewController:(UMSocialResponseEntity *)response { //根據`responseCode`得到發送結果,如果分享成功 if(response.responseCode == UMSResponseCodeSuccess) { //得到分享到的微博平台名 NSLog(@"share to sns name is %@",[[response.data allKeys] objectAtIndex:0]); } }
使用自定義分享界面,在對於的Twitter分享按鈕中實現下面的方法
[[UMSocialDataService defaultDataService] postSNSWithTypes:@[UMShareToTwitter] content:@"分享文字" image:nil location:nil urlResource:nil presentedController:self completion:^(UMSocialResponseEntity *response){ if (response.responseCode == UMSResponseCodeSuccess) { NSLog(@"分享成功!"); } }];
9.3.2 使用應用內網頁分享
9.3.2.1 添加相關庫文件
解壓下載文件夾,在UMSocial_Sdk_Extra_Frameworks
目錄下,把Twitter
文件夾添加到工程,並添加系統Framework:Accounts.framework
和Social.framework
9.3.2.2 添加Twitter
在AppDelegate的入口方法設置:
#import "UMSocialTwitterHandler.h" - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [UMSocialTwitterHandler openTwitter]; }
設置分享內容方法與使用系統自帶Twitter分享相同
9.4 添加Instagram
9.4.1 添加相關庫文件
解壓下載文件夾,在UMSocial_Sdk_Extra_Frameworks
目錄下,把Instagram
文件夾添加到工程
9.4.2 添加Instagram開關
在AppDelegate的入口方法設置:
#import "UMSocialInstagramHandler.h" - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [UMSocialInstagramHandler openInstagramWithScale:NO paddingColor:[UIColor blackColor]]; }
9.4.3 設置分享內容
使用默認分享界面調用下面的方法
[UMSocialSnsService presentSnsIconSheetView:self appKey:你的友盟應用Appkey shareText:@"友盟社會化分享讓您快速實現分享等社會化功能,www.umeng.com/social" shareImage:[UIImage imageNamed:@"icon.png"] shareToSnsNames:@[UMShareToInstagram] delegate:self]; //實現回調方法(可選): -(void)didFinishGetUMSocialDataInViewController:(UMSocialResponseEntity *)response { //根據`responseCode`得到發送結果,如果分享成功 if(response.responseCode == UMSResponseCodeSuccess) { //得到分享到的微博平台名 NSLog(@"share to sns name is %@",[[response.data allKeys] objectAtIndex:0]); } }
使用自定義界面,在對應的Instagram
分享按鈕中實現下面的方法
[[UMSocialDataService defaultDataService] postSNSWithTypes:@[UMShareToInstagram] content:@"分享文字" image:nil location:nil urlResource:nil presentedController:self completion:^(UMSocialResponseEntity *response){ if (response.responseCode == UMSResponseCodeSuccess) { NSLog(@"分享成功!"); } }];
9.5 添加Line
9.5.1 添加相關庫文件
解壓下載文件夾,在UMSocial_Sdk_Extra_Frameworks
目錄下,把Line
文件夾添加到工程
9.5.2 添加Line開關
在AppDelegate的入口方法設置:
#import "UMSocialLineHandler.h" - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { //分享到line,只能分享純文本消息或者純圖片消息 [UMSocialLineHandler openLineShare:UMSocialLineMessageTypeImage]; }
9.5.3 設置分享內容
使用默認分享界面,添加下面的代碼
[UMSocialSnsService presentSnsIconSheetView:self appKey:你的友盟應用Appkey shareText:@"友盟社會化分享讓您快速實現分享等社會化功能,www.umeng.com/social" shareImage:[UIImage imageNamed:@"icon.png"] shareToSnsNames:@[UMShareToLine] delegate:self]; //實現回調方法(可選): -(void)didFinishGetUMSocialDataInViewController:(UMSocialResponseEntity *)response { //根據`responseCode`得到發送結果,如果分享成功 if(response.responseCode == UMSResponseCodeSuccess) { //得到分享到的微博平台名 NSLog(@"share to sns name is %@",[[response.data allKeys] objectAtIndex:0]); } }
使用自定義分享界面,在對應的Line
分享按鈕中實現下面的方法
[[UMSocialDataService defaultDataService] postSNSWithTypes:@[UMShareToLine] content:@"分享文字" image:nil location:nil urlResource:nil presentedController:self completion:^(UMSocialResponseEntity *response){ if (response.responseCode == UMSResponseCodeSuccess) { NSLog(@"分享成功!"); } }];
9.6 添加Whatsapp
9.6.1 添加相關庫文件
解壓下載文件夾,在UMSocial_Sdk_Extra_Frameworks
目錄下,把Whatsapp
文件夾添加到工程
9.6.2 添加Whatsapp開關
在AppDelegate的入口方法設置:
#import "UMSocialLineHandler.h" - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { //分享到whatsapp,只能分享純文本消息或者純圖片消息 [UMSocialWhatsappHandler openWhatsapp:UMSocialWhatsappMessageTypeImage]; }
9.6.3 設置分享內容
使用默認分享界面,添加下面的代碼
[UMSocialSnsService presentSnsIconSheetView:self appKey:你的友盟應用Appkey shareText:@"友盟社會化分享讓您快速實現分享等社會化功能,www.umeng.com/social" shareImage:[UIImage imageNamed:@"icon.png"] shareToSnsNames:@[UMShareToWhatsapp] delegate:self]; //實現回調方法(可選): -(void)didFinishGetUMSocialDataInViewController:(UMSocialResponseEntity *)response { //根據`responseCode`得到發送結果,如果分享成功 if(response.responseCode == UMSResponseCodeSuccess) { //得到分享到的微博平台名 NSLog(@"share to sns name is %@",[[response.data allKeys] objectAtIndex:0]); } }
使用自定義分享界面,在對應的Whapsapp
分享按鈕中實現下面的方法
[[UMSocialDataService defaultDataService] postSNSWithTypes:@[UMShareToWhatsapp] content:@"分享文字" image:nil location:nil urlResource:nil presentedController:self completion:^(UMSocialResponseEntity *response){ if (response.responseCode == UMSResponseCodeSuccess) { NSLog(@"分享成功!"); } }];
9.7 添加Tumblr
注意:我們采用打開Tumblr客戶端方式分享到Tumblr,由於Tumblr客戶端沒有兼容iOS8,因此在iOS8上分享失敗
9.7.1 添加相關庫文件
解壓下載文件夾,在UMSocial_Sdk_Extra_Frameworks
目錄下,把Tumblr
文件夾添加到工程
9.7.2 添加Tumblr開關
在AppDelegate的入口方法設置
#import "UMSocialTumblrHandler.h" - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [UMSocialTumblrHandler openTumblr]; }
9.7.3 設置分享內容
使用默認分享界面,添加下面的代碼
[UMSocialSnsService presentSnsIconSheetView:self appKey:你的友盟應用Appkey shareText:@"友盟社會化分享讓您快速實現分享等社會化功能,www.umeng.com/social" shareImage:[UIImage imageNamed:@"icon.png"] shareToSnsNames:@[UMShareToTumblr] delegate:self]; //實現回調方法(可選): -(void)didFinishGetUMSocialDataInViewController:(UMSocialResponseEntity *)response { //根據`responseCode`得到發送結果,如果分享成功 if(response.responseCode == UMSResponseCodeSuccess) { //得到分享到的微博平台名 NSLog(@"share to sns name is %@",[[response.data allKeys] objectAtIndex:0]); } }
使用自定義分享界面,在對應的Tumblr
分享按鈕中實現下面的方法
[[UMSocialDataService defaultDataService] postSNSWithTypes:@[UMShareToTumblr] content:@"分享文字" image:nil location:nil urlResource:nil presentedController:self completion:^(UMSocialResponseEntity *response){ if (response.responseCode == UMSResponseCodeSuccess) { NSLog(@"分享成功!"); } }];
10. 設置分享內容
10.1 使用默認分享界面
在分享按鈕中實現下面的方法
[UMSocialSnsService presentSnsIconSheetView:self appKey:你的友盟應用Appkey shareText:@"友盟社會化分享讓您快速實現分享等社會化功能,http://umeng.com/social" shareImage:[UIImage imageNamed:@"icon.png"] shareToSnsNames:@[UMShareToSina,UMShareToTencent,UMShareToRenren,UMShareToDouban,UMShareToEmail] delegate:self]; //實現回調方法(可選): -(void)didFinishGetUMSocialDataInViewController:(UMSocialResponseEntity *)response { //根據`responseCode`得到發送結果,如果分享成功 if(response.responseCode == UMSResponseCodeSuccess) { //得到分享到的微博平台名 NSLog(@"share to sns name is %@",[[response.data allKeys] objectAtIndex:0]); } }
- shareToSnsNames中傳遞的參數順序即為分享面板中各個分享平台的排列順序
- 如果需要支持橫屏,則在彈出分享列表頁前調用
[UMSocialConfig setSupportedInterfaceOrientations:UIInterfaceOrientationMaskLandscape]
;
10.2 使用自定義分享界面
需要使用自定義分享界面,可以在對應的分享按鈕中調用下面的方法,如新浪微博
[[UMSocialDataService defaultDataService] postSNSWithTypes:@[UMShareToSina] content:@"友盟社會化分享讓您快速實現分享等社會化功能,http://umeng.com/social" image:nil location:nil urlResource:nil presentedController:self completion:^(UMSocialResponseEntity *response){ if (response.responseCode == UMSResponseCodeSuccess) { NSLog(@"分享成功!"); } }];
其他平台替換UMShareToSina
如騰訊微博則替換為UMShareToTencent
各平台參數列表為
平台名 | 參數 |
新浪微博 | UMShareToSina |
騰訊微博 | UMShareToTencent |
UMShareToQQ | |
QQ空間 | UMShareToQzone |
微信 | UMShareToWechatSession |
微信朋友圈 | UMShareToWechatTimeline |
微信收藏 | UMShareToFavorite |
郵件 | UMShareToEmail |
短信 | UMShareToSms |
豆瓣 | UMShareToSms |
短信 | UMShareToDouban |
人人網 | UMShareToRenren |
UMShareToFacebook | |
UMShareToTwitter | |
易信 | UMShareToYXSession |
易信朋友圈 | UMShareToYXTimeline |
來往 | UMShareToLWSession |
來往動態 | UMShareToLWTimeline |
UMShareToInstagram | |
Line | UMShareToLine |
UMShareToWhatsapp | |
Tumblr | UMShareToTumblr |
10.3 分享多媒體資源
10.3.1 分享URL圖片
使用默認分享界面,使用下面的代碼
[[UMSocialData defaultData].urlResource setResourceType:UMSocialUrlResourceTypeImage url:@"http://www.baidu.com/img/bdlogo.gif"]; //調用快速分享接口 [UMSocialSnsService presentSnsIconSheetView:self appKey:你的友盟應用Appkey shareText:@"友盟社會化分享讓您快速實現分享等社會化功能,http://umeng.com/social" shareImage:nil shareToSnsNames:@[UMShareToSina] delegate:self]; //實現回調方法(可選): -(void)didFinishGetUMSocialDataInViewController:(UMSocialResponseEntity *)response { //根據`responseCode`得到發送結果,如果分享成功 if(response.responseCode == UMSResponseCodeSuccess) { //得到分享到的微博平台名 NSLog(@"share to sns name is %@",[[response.data allKeys] objectAtIndex:0]); } }
使用自定義分享界面,在對應平台分享按鈕中實現下面的方法
UMSocialUrlResource *urlResource = [[UMSocialUrlResource alloc] initWithSnsResourceType:UMSocialUrlResourceTypeImage url:
@"http://www.baidu.com/img/bdlogo.gif"]; [[UMSocialDataService defaultDataService] postSNSWithTypes:@[UMShareToSina] content:@"分享內嵌文字" image:nil location:nil urlResource:urlResource presentedController:self completion:^(UMSocialResponseEntity *shareResponse){ if (shareResponse.responseCode == UMSResponseCodeSuccess) { NSLog(@"分享成功!"); } }];
分享其他平台替換UMShareToSina
為其他平台參數即可
10.3.2 分享本地gif圖片
分享本地gif圖片到各個開放平台,需要生成把本地gif圖片生成NSData
對象,作為各個分享方法的shareImage參數,例如快速分享接口如下寫法。
分享png、jpg圖片則只需要生成UIImage,傳入到shareImage參數,不能使用這種寫法。
//分享gif圖片 NSString *path = [[NSBundle mainBundle] pathForResource:@"picName" ofType:@"gif"]; NSData *gifData = [NSData dataWithContentsOfFile:path]; [UMSocialSnsService presentSnsIconSheetView:self appKey:UmengAppkey shareText:shareText shareImage:gifData shareToSnsNames:nil delegate:self]; //分享png、jpg圖片 [UMSocialSnsService presentSnsIconSheetView:self appKey:UmengAppkey shareText:shareText shareImage:[UIImage imageNamed:@"picName"] shareToSnsNames:nil delegate:self];
10.3.3 分享URL音樂
分享音樂資源只需要將UMSocialUrlResourceType
設置為Music
類型即可
[[UMSocialData defaultData].urlResource setResourceType:UMSocialUrlResourceTypeMusic url:@"http://mr4.douban.com/201401091529/6e0b23f37fa584f2a6e58ac70d03b31e/view/song/small/p759182.mp3"]; //調用快速分享接口 [UMSocialSnsService presentSnsIconSheetView:self appKey:你的友盟應用Appkey shareText:@"友盟社會化分享讓您快速實現分享等社會化功能,http://umeng.com/social" shareImage:nil shareToSnsNames:@[UMShareToSina] delegate:self]; //實現回調方法(可選): -(void)didFinishGetUMSocialDataInViewController:(UMSocialResponseEntity *)response { //根據`responseCode`得到發送結果,如果分享成功 if(response.responseCode == UMSResponseCodeSuccess) { //得到分享到的微博平台名 NSLog(@"share to sns name is %@",[[response.data allKeys] objectAtIndex:0]); } }
微信設置分享音樂方法
微信分享音樂方法直接調用原生SDK方法
WXMusicObject *musicObject = [WXMusicObject object];
musicObject.musicUrl = @"要跳轉的連接"; musicObject.musicDataUrl = @"我分享的是mp3,這里是mp3的連接"; [UMSocialData defaultData].extConfig.wxMediaObject = musicObject; [UMSocialData defaultData].extConfig.wxMessageType = UMSocialWXMessageTypeOther;
10.3.4 分享URL視頻
分享視頻資源需要將UMSocialUrlResourceType
設置為Video
類型即可
[[UMSocialData defaultData].urlResource setResourceType:UMSocialUrlResourceTypeVideo url:@"http://v.youku.com/v_show/id_XNjQ1NjczNzEy.html?f=21207816&ev=2"]; //調用快速分享接口 [UMSocialSnsService presentSnsIconSheetView:self appKey:你的友盟應用Appkey shareText:@"友盟社會化分享讓您快速實現分享等社會化功能,http://umeng.com/social" shareImage:nil shareToSnsNames:@[UMShareToSina] delegate:self]; //實現回調方法(可選): -(void)didFinishGetUMSocialDataInViewController:(UMSocialResponseEntity *)response { //根據`responseCode`得到發送結果,如果分享成功 if(response.responseCode == UMSResponseCodeSuccess) { //得到分享到的微博平台名 NSLog(@"share to sns name is %@",[[response.data allKeys] objectAtIndex:0]); } }
10.4 分平台設置分享內容
[UMSocialData defaultData].extConfig下設置各個分享平台的分享文字、分享圖片、分享視頻、音樂等。各個平台的對象名,請參看頭文件定義,此設置方法不支持直接發送分享內容的底層分享方法,只支持使用有界面的分享方法,示例代碼如下:
[UMSocialData defaultData].extConfig.sinaData.shareText = @"分享到新浪微博內容"; [UMSocialData defaultData].extConfig.tencentData.shareImage = [UIImage imageNamed:@"icon"]; //分享到騰訊微博圖片 [[UMSocialData defaultData].extConfig.wechatSessionData.urlResource setResourceType:UMSocialUrlResourceTypeImage url:@"http://www.baidu.com/img/bdlogo.gif"]; //設置微信好友分享url圖片 [[UMSocialData defaultData].extConfig.wechatTimelineData.urlResource setResourceType:UMSocialUrlResourceTypeVideo url:@"http://v.youku.com/v_show/id_XNjQ1NjczNzEy.html?f=21207816&ev=2"]; //設置微信朋友圈分享視頻
10.5 添加自定義平台
如果需要修改已有面板中的按鈕,可以參考下面的方法修改平台相應的圖片、文字和點擊事件等,例如下面修改新浪微博的圖片、文字和點擊事件
UMSocialSnsPlatform *sinaPlatform = [UMSocialSnsPlatformManager getSocialPlatformWithName:UMShareToSina];
sinaPlatform.bigImageName = @"icon"; sinaPlatform.displayName = @"微博"; sinaPlatform.snsClickHandler = ^(UIViewController *presentingController, UMSocialControllerService * socialControllerService, BOOL isPresentInController){ NSLog(@"點擊新浪微博的響應"); };
如果需要添加自定義按鈕,如復制鏈接等按鈕,在appdelegate方法內添加下面的代碼:
UMSocialSnsPlatform *snsPlatform = [[UMSocialSnsPlatform alloc] initWithPlatformName:@"CustomPlatform"]; snsPlatform.displayName = @"自定義平台"; snsPlatform.snsClickHandler = ^(UIViewController *presentingController, UMSocialControllerService * socialControllerService, BOOL isPresentInController){ NSLog(@"點擊自定義平台的響應"); }; [UMSocialConfig addSocialSnsPlatform:@[snsPlatform]]; //設置你要在分享面板中出現的平台 [UMSocialConfig setSnsPlatformNames:@[UMShareToSina,@"CustomPlatform"]];
11. 常見錯誤
11.1 錯誤碼列表
5001 | 錯誤的友盟appkey,或者此appkey沒有綁定任何平台.如果開發者綁定了,依然出現這個問題,讓開發者再試一下,可能是剛綁定馬上就測試的原因,最好等2分鍾。 |
5002 | 這個友盟appkey已經被禁止 |
5003 | 請求的參數中沒有uid |
5004 | 未知的錯誤,具體的錯誤信息會在log的輸出中 |
5005 | 訪問頻率超限,可一會兒再試 |
5006 | 請求參數中沒有content字段 |
5007 | 請求參數中content字段的內容為空 |
5008 | 沒有上傳圖片 |
5009 | 此友盟的appkey沒有綁定對應平台的appkey和appsecret |
5010 | userid無效,這個用戶並沒有進行授權 |
5013 | 請求的參數中沒有appkey這個字段 |
5014 | 沒有對此用戶進行授權 |
5016 | 分享信息重復 |
5017 | 分享圖片大小有問題 |
5024 | 獲取access token失敗,具體看log輸出 |
5025 | 獲取access token失敗,具體看log輸出 |
5027 | 授權已經過期 |
5028 | 授權已經過期 |
5015 | 請求中沒有state參數 |
5016 | 發送了重復內容的微博 |
5017 | 圖像文件大小不正確 |
5018 | appurl不正確 |
5019 | 圖像url不正確 |
5020 | 沒有使用Qzone add_share接口的權限 |
5029 | 該用戶已經關注過了 |
5030 | 沒有使用此api的權限 |
5031 | openid錯誤 |
5032 | 用戶不存在或者用戶無法在平台發言 |
5033 | 請求參數非法 |
5034 | 用戶不在平台的應用測試列表當中 |
5035 | 發布內容頻率太高 |
5036 | IMEI參數錯誤 |
5037 | 此App尚未授權過 |
500 | 給定uid的用戶並不存在 |
501 | 綁定賬戶失敗 |
502 | 解綁定失敗 |
503 | 評論失敗 |
504 | 獲取評論失敗 |
505 | 用戶被加入黑名單 |
506 | 獲取好友失敗 |
507 | 獲取授權url失敗 |
508 | 解除授權失敗 |
510 | 分享失敗 |
511 | 獲取bar失敗 |
512 | 從平台獲取用戶信息失敗 |
513 | url跳轉失敗 |
514 | 從social獲取用戶信息失敗 |
515 | 請求的參數錯誤 |
516 | 請求喜歡失敗 |
517 | 版本號錯誤 |
-101 | 沒有Oauth授權 |
-102 | 未知錯誤 |
-103 | 服務器沒響應 |
-104 | 初始化失敗 |
-105 | 參數錯誤 |