社交服務微信
Social網絡
現 在不少應用都內置「社交分享」功能,能夠將看到的新聞、博客、廣告等內容分享到微博、微信、QQ、空間等,其實從iOS6.0開始蘋果官方就內置了 Social.framework專門來實現社交分享功能,利用這個框架開發者只須要幾句代碼就能夠實現內容分享。下面就以一個分享到新浪微博的功能爲例 來演示Social框架的應用,整個過程分爲:建立內容編輯控制器,設置分享內容(文本內容、圖片、超連接等),設置發送(或取消)後的回調事件,展現控 制器。app
程序代碼:框架
1 // 2 // ViewController.m 3 // Social 4 // 5 // Created by Kenshin Cui on 14/04/05. 6 // Copyright (c) 2015年 cmjstudio. All rights reserved. 7 // 8 #import "ViewController.h" 9 #import 10 @interface ViewController () 11 @end 12 @implementation ViewController 13 #pragma mark - 控制器視圖事件 14 - (void)viewDidLoad { 15 [super viewDidLoad]; 16 17 } 18 #pragma mark - UI事件 19 - (IBAction)shareClick:(UIBarButtonItem *)sender { 20 [self shareToSina]; 21 } 22 #pragma mark - 私有方法 23 -(void)shareToSina{ 24 //檢查新浪微博服務是否可用 25 if(![SLComposeViewController isAvailableForServiceType:SLServiceTypeSinaWeibo]){ 26 NSLog(@"新浪微博服務不可用."); 27 return; 28 } 29 //初始化內容編寫控制器,注意這裏指定分享類型爲新浪微博 30 SLComposeViewController *composeController=[SLComposeViewController composeViewControllerForServiceType:SLServiceTypeSinaWeibo]; 31 //設置默認信息 32 [composeController setInitialText:@"Kenshin Cui's Blog..."]; 33 //添加圖片 34 [composeController addImage:[UIImage imageNamed:@"stevenChow"]]; 35 //添加鏈接 36 [composeController addURL:[NSURL URLWithString:@"http://www.cnblogs.com/kenshincui"]]; 37 //設置發送完成後的回調事件 38 __block SLComposeViewController *composeControllerForBlock=composeController; 39 composeController.completionHandler=^(SLComposeViewControllerResult result){ 40 if (result==SLComposeViewControllerResultDone) { 41 NSLog(@"開始發送..."); 42 } 43 [composeControllerForBlock dismissViewControllerAnimated:YES completion:nil]; 44 }; 45 //顯示編輯視圖 46 [self presentViewController:composeController animated:YES completion:nil]; 47 } 48 @end
運行效果:ui
發送成功以後:this
在 這個過程當中開發人員不須要知道新浪微博的更多分享細節,Social框架中已經統一了分享的接口,你能夠經過ServiceType設置是分享到 Facebook、Twitter、新浪微博、騰訊微博,而不關心具體的細節實現。那麼當運行上面的示例時它是怎麼知道用哪一個帳戶來發送微博呢?其實在 iOS的設置中有專門設置Facebook、Twitter、微博的地方:url
必須首先在這裏設置微博帳戶才能完成上面的發送,否則Social框架也不可能知道具體使用哪一個帳戶來發送。spa
第三方框架代理
當 然,經過上面的設置界面應該能夠看到,蘋果官方默認支持的分享並不太多,特別是對於國內的應用只支持新浪微博和騰訊微博(事實上從iOS7蘋果才考慮支持 騰訊微博),那麼若是要分享到微信、人人、開心等等國內較爲知名的社交網絡怎麼辦呢?目前最好的選擇就是使用第三方框架,由於若是要本身實現各個應用的接 口仍是比較複雜的。當前使用較多的就是友盟社會化組件、ShareSDK,並且如今百度也出了社會化分享組件。今天沒法對全部組件都進行一一介紹,這裏就 以友盟社交化組件爲例簡單作一下介紹:code
註冊友盟帳號並新建應用得到AppKey。
下載友盟SDK並將下載的文件放到項目中(注意下載的過程當中能夠選擇所須要的分享服務)。
在應用程序中設置友盟的AppKey。
分 享時調用presentSnsIconSheetView: appKey: shareText: shareImage: shareToSnsNames: delegate:方法或者presentSnsController: appKey: shareText: shareImage: shareToSnsNames: delegate:方法顯示分享列表(注意這個過程當中要使用某些服務須要到對應的平臺去申請並對應擴展框架進行設置,不然分享列表中不會顯示對應的分享按 鈕)。
下面是一個簡單的示例:
1 // 2 // ViewController.m 3 // Social_UM 4 // 5 // Created by Kenshin Cui on 14/04/05. 6 // Copyright (c) 2015年 cmjstudio. All rights reserved. 7 // 8 #import "ViewController.h" 9 #import "UMSocial.h" 10 #import "UMSocialWechatHandler.h" 11 @interface ViewController () 12 @end 13 @implementation ViewController 14 #pragma mark - 控制器視圖事件 15 - (void)viewDidLoad { 16 [super viewDidLoad]; 17 18 } 19 #pragma mark - UI事件 20 - (IBAction)shareClick:(UIBarButtonItem *)sender { 21 //設置微信AppId、appSecret,分享url 22 // [UMSocialWechatHandler setWXAppId:@"wx30dbea5d5a258ed3" appSecret:@"cd36a9829e4b49a0dcac7b4162da5a5" url:@"http://www.cmj.com/social-UM"]; 23 //微信好友、微信朋友圈、微信收藏、QQ空間、QQ好友、來往好友等都必須通過各自的平臺集成不然不會出如今分享列表,例如上面是設置微信的AppId和appSecret 24 [UMSocialSnsService presentSnsIconSheetView:self appKey:@"54aa0a0afd98c5209f000efa" shareText:@"Kenshin Cui's Blog..." shareImage:[UIImage imageNamed:@"stevenChow"] shareToSnsNames:@[UMShareToSina,UMShareToTencent,UMShareToRenren,UMShareToDouban] delegate:self]; 25 } 26 #pragma mark - UMSocialSnsService代理 27 //分享完成 28 -(void)didFinishGetUMSocialDataInViewController:(UMSocialResponseEntity *)response{ 29 //分享成功 30 if(response.responseCode==UMSResponseCodeSuccess){ 31 NSLog(@"分享成功"); 32 } 33 } 34 @end
運行效果:
注意:在第一次使用某個分享服務是須要輸入相應的帳號得到受權才能分享。