iOS開(kāi)發(fā)過(guò)程中可能會(huì)遇到需要進(jìn)行第三方分享的需求铛楣,比如向QQ近迁,微信,微博等分享簸州,我們今天要講到的方式是使用了一個(gè)第三方工具: http://www.sharesdk.cn
一鉴竭、注冊(cè)賬號(hào)
去官網(wǎng)注冊(cè):http://www.sharesdk.cn
創(chuàng)建應(yīng)用,最終獲得 App Key,App Secret
二岸浑、SDK集成
1搏存、下載SDK
把下載的SDK拖到項(xiàng)目工程,在彈出的對(duì)話框中選中"Copy items if needed"和"Create groups"矢洲,并點(diǎn)擊“Finish“按鈕
2璧眠、添加依賴庫(kù)文件
必須添加的依賴庫(kù):
SystemConfiguration.framework
QuartzCore.framework
CoreTelephony.framework
libicucore.dylib
libz.1.2.5.dylib
Security.framework
3、根據(jù)社交平臺(tái)需要添加的依賴庫(kù)
Social.framework?? ?騰訊微博
Accounts.framework ?騰訊微博
MessageUI.framework 短信和郵件
libstdc++.dylib ??QQ好友和QQ空間SSO授權(quán)需要(新注冊(cè)的騰訊開(kāi)放平臺(tái)帳號(hào)只支持SSO授權(quán)權(quán)限)
libsqlite3.dylib ? QQ好友和QQ空間SSO授權(quán)需要(新注冊(cè)的騰訊開(kāi)放平臺(tái)帳號(hào)只支持SSO授權(quán)權(quán)限)
CoreMotion.framework ? Google+
CoreLocation.framework Google+
MediaPlayer.framework? Google+
CoreText.framework?? Google+
AssetsLibrary.framework? ? Google+
AddressBook.framework? Google+
到此為止SDK集成就算完成 下來(lái)我們開(kāi)始代碼部分
三读虏、初始ShareSDK和社交平臺(tái)
1.設(shè)置根視圖控制器
必須設(shè)置rootViewController责静。如果使用storyBoard,系統(tǒng)會(huì)自動(dòng)設(shè)置根視圖控制器盖桥。
2.初始化ShareSDK
導(dǎo)入頭文件灾螃,加上初始化方法。
#import <ShareSDK/ShareSDK.h>
//1.初始化ShareSDK應(yīng)用,字符串"ios1705"是應(yīng)該換成你申請(qǐng)的ShareSDK應(yīng)用中的Appkey
[ShareSDKregisterApp:@"ios1705"];
//2.?初始化社交平臺(tái)
//2.1?代碼初始化社交平臺(tái)的方法
[selfinitializePlat];
[self initializePlat ] ?方法見(jiàn)下一步(此處以微信葱轩,qq睦焕,騰訊微博 ,新浪微博為例)靴拱;
3.初始化社交平臺(tái)
可以用代碼初始化或在ShareSDK開(kāi)發(fā)者后臺(tái)的社會(huì)化平臺(tái)設(shè)置中填入社交平臺(tái)的信息垃喊。
#import?"WXApi.h"
#import?"WeiboSDK.h"
#import?"WeiboApi.h"
#import <TencentOpenAPI/QQApi.h>
#import <TencentOpenAPI/QQApiInterface.h>
#import <TencentOpenAPI/TencentOAuth.h>
社交平臺(tái)的AppKey、AppSecret袜炕、回調(diào)地址等需要您自已去相應(yīng)平臺(tái)新建應(yīng)用獲取本谜。
-?(void)initializePlat
{
/**
連接微信應(yīng)用以使用相關(guān)功能,此應(yīng)用需要引用WeChatConnection.framework和微信官方SDK
http://open.weixin.qq.com上注冊(cè)應(yīng)用偎窘,并將相關(guān)信息填寫以下字段
**/
[ShareSDKconnectWeChatWithAppId:@""
appSecret:@""
wechatCls:[WXApiclass]];
/**
連接QQ應(yīng)用以使用相關(guān)功能乌助,此應(yīng)用需要引用QQConnection.framework和QQApi.framework庫(kù)
http://mobile.qq.com/api/上注冊(cè)應(yīng)用,并將相關(guān)信息填寫到以下字段
**/
//舊版中申請(qǐng)的AppId(如:QQxxxxxx類型)陌知,可以通過(guò)下面方法進(jìn)行初始化
//????[ShareSDK?connectQQWithAppId:@"QQ075BCD15"?qqApiCls:[QQApi?class]];
[ShareSDKconnectQQWithQZoneAppKey:@""
qqApiInterfaceCls:[QQApiInterfaceclass]
tencentOAuthCls:[TencentOAuthclass]];
//
/**
連接騰訊微博開(kāi)放平臺(tái)應(yīng)用以使用相關(guān)功能他托,此應(yīng)用需要引用TencentWeiboConnection.framework
http://dev.t.qq.com上注冊(cè)騰訊微博開(kāi)放平臺(tái)應(yīng)用,并將相關(guān)信息填寫到以下字段
如果需要實(shí)現(xiàn)SSO仆葡,需要導(dǎo)入libWeiboSDK.a赏参,并引入WBApi.h,將WBApi類型傳入接口
**/
[ShareSDKconnectTencentWeiboWithAppKey:@""
appSecret:@""
redirectUri:@"http://www.sharesdk.cn"
wbApiCls:[WeiboApiclass]];
//
/**
連接QQ空間應(yīng)用以使用相關(guān)功能,此應(yīng)用需要引用QZoneConnection.framework
http://connect.qq.com/intro/login/上申請(qǐng)加入QQ登錄把篓,并將相關(guān)信息填寫到以下字段
如果需要實(shí)現(xiàn)SSO纫溃,需要導(dǎo)入TencentOpenAPI.framework,并引入QQApiInterface.h和TencentOAuth.h,將QQApiInterface和TencentOAuth的類型傳入接口
**/
//????[ShareSDK?connectQZoneWithAppKey:@""
//???????????????????????????appSecret:@""
//???????????????????qqApiInterfaceCls:[QQApiInterface?class]
//?????????????????????tencentOAuthCls:[TencentOAuth?class]];
/**
連接新浪微博開(kāi)放平臺(tái)應(yīng)用以使用相關(guān)功能韧掩,此應(yīng)用需要引用SinaWeiboConnection.framework
http://open.weibo.com上注冊(cè)新浪微博開(kāi)放平臺(tái)應(yīng)用紊浩,并將相關(guān)信息填寫到以下字段
**/
[ShareSDKconnectSinaWeiboWithAppKey:@""
appSecret:@""
redirectUri:@"http://www.sharesdk.cn"];
}
四,設(shè)置URL Scheme
1.需要依賴客戶端分享或者要支持SSO授權(quán)(可以理解成跳到客戶端授權(quán))的平臺(tái)都需要配置平臺(tái)的URL Scheme(應(yīng)用分享到社交平臺(tái)后通過(guò)識(shí)別URL Scheme返回應(yīng)用)疗锐。具體配置URL Scheme請(qǐng)參考iOS配置SSO授權(quán)
(http://wiki.mob.com/%E9%85%8D%E7%BD%AEsso%E6%8E%88%E6%9D%83-2/)坊谁。
2.需要在AppDelegate.m中添加處理打開(kāi)鏈接的方法
- (BOOL)application:(UIApplication*)application
handleOpenURL:(NSURL*)url
{
return[ShareSDKhandleOpenURL:url
wxDelegate:self];
}
-?(BOOL)application:(UIApplication*)application
openURL:(NSURL*)url
sourceApplication:(NSString*)sourceApplication
annotation:(id)annotation
{
return[ShareSDKhandleOpenURL:url
sourceApplication:sourceApplication
annotation:annotation
wxDelegate:self];
}
五、構(gòu)造分享內(nèi)容并分享
1.構(gòu)造一個(gè)id類型的對(duì)象窒悔,把需要分享的標(biāo)題呜袁、內(nèi)容、圖片简珠、URL等 包裝在這個(gè)對(duì)象阶界。
在需要分享的viewController 中導(dǎo)入頭文件
#import <ShareSDK/ShareSDK.h>
在需要分享的地方 實(shí)現(xiàn)如下方法
-(void)shareAct:(id)sender
{
//
NSString*imagePath?=?[[NSBundlemainBundle]pathForResource:@"ShareSDK"ofType:@"jpg"];
//1、構(gòu)造分享內(nèi)容
id?publishContent?=?[ShareSDKcontent:@"要分享的內(nèi)容"
defaultContent:@"默認(rèn)內(nèi)容"
image:[ShareSDKimageWithPath:imagePath]
title:@"ShareSDK"
url:@"http://www.mob.com"
description:@"這是一條演示信息"
mediaType:SSPublishContentMediaTypeNews];
//1+創(chuàng)建彈出菜單容器(iPad必要)
id?container?=?[ShareSDKcontainer];
[containersetIPadContainerWithView:senderarrowDirect:UIPopoverArrowDirectionUp];
//2聋庵、彈出分享菜單
[ShareSDKshowShareActionSheet:container
shareList:nil
content:publishContent
statusBarTips:YES
authOptions:nil
shareOptions:nil
result:^(ShareType?type,?SSResponseState?state,id?statusInfo,id?error,BOOLend)?{
//可以根據(jù)回調(diào)提示用戶膘融。
if(state?==?SSResponseStateSuccess)
{
UIAlertView*alert?=?[[UIAlertViewalloc]initWithTitle:@"分享成功"
message:nil
delegate:self
cancelButtonTitle:@"OK"
otherButtonTitles:nil,nilnil];
[alertshow];
}
elseif(state?==?SSResponseStateFail)
{
UIAlertView*alert?=?[[UIAlertViewalloc]initWithTitle:@"分享失敗"
message:[NSStringstringWithFormat:@"失敗描述:%@",[errorerrorDescription]]
delegate:self
cancelButtonTitle:@"OK"
otherButtonTitles:nil,nilnil];
[alertshow];
}
}];
}
到此基本完成。