基于ShareSDK平臺的分享實現(xiàn)

版本記錄

版本號 時間
V1.0 2017.08.03

前言

前面我寫過ShareSDK登錄困肩,以及蘋果原生的幾種分享方式,但是還沒有對ShareSDK在分享上的應(yīng)用進(jìn)行配置静浴,這一篇主要就是講解ShareSDK在分享上的應(yīng)用击儡。

功能要求

結(jié)合工程實踐术奖,演示ShareSDK在分享上的應(yīng)用站楚。


功能實現(xiàn)

下面我就結(jié)合具體的工程實踐脱惰,詳細(xì)的講解下ShareSDK的分享實現(xiàn)。

1. 工程配置

首先我們需要配置下工程窿春。

工程配置請參考我寫的ShareSDK登錄篇拉一。

2. 代碼實現(xiàn)

下面寫一個分享的工具類實現(xiàn)第三方平臺的分享,直接看代碼吧旧乞。

1. JJShareTool.h
#import <Foundation/Foundation.h>

@interface JJShareTool : NSObject

//分享
+ (void)shareWithButtonTag:(NSInteger)btnTag Text:(NSString *)text
                    images:(id)images
                       url:(NSURL *)url
                     title:(NSString *)title
                   success:(void(^)(BOOL isSuccess,NSString* channelType))success
                      fail:(void(^)(BOOL isFail))fail
                    cancel:(void(^)(BOOL isCancel))cancel
              notInstalled:(void(^)(BOOL isInstalled, NSString *msg))notInstalled;

@end
2. JJShareTool.m
#import "JJShareTool.h"

#import <ShareSDK/ShareSDK.h>
#import <ShareSDKExtension/SSEShareHelper.h>
#import <ShareSDKUI/ShareSDK+SSUI.h>
#import <ShareSDKUI/SSUIShareActionSheetStyle.h>
#import <ShareSDKUI/SSUIShareActionSheetCustomItem.h>
#import <ShareSDK/ShareSDK+Base.h>

#import <ShareSDKExtension/ShareSDK+Extension.h>
#import "WXApi.h"
#import "WeiboSDK.h"
//騰訊開放平臺(對應(yīng)QQ和QQ空間)SDK頭文件
#import <TencentOpenAPI/TencentOAuth.h>
#import <TencentOpenAPI/QQApiInterface.h>

@implementation JJShareTool


//分享
+ (void)shareWithButtonTag:(NSInteger)btnTag Text:(NSString *)text
                    images:(id)images
                       url:(NSURL *)url
                     title:(NSString *)title
                    success:(void(^)(BOOL isSuccess,NSString* channelType))success
                    fail:(void(^)(BOOL isFail))fail
                    cancel:(void(^)(BOOL isCancel))cancel
                    notInstalled:(void(^)(BOOL isInstalled, NSString *msg))notInstalled
{
    if (btnTag == 5) {
        if (notInstalled) {
            if (![WeiboSDK isWeiboAppInstalled]) {
                notInstalled([WeiboSDK isWeiboAppInstalled], @"未安裝微博客戶端蔚润,請安裝后重新分享");
                return;
            }
        }
    } else if (btnTag%2==1) {
        if (notInstalled) {
            if (![WXApi isWXAppInstalled]) {
                notInstalled([WXApi isWXAppInstalled], @"未安裝微信客戶端,請安裝后重新分享");
                return;
            }
        }
    } else {
        if (notInstalled) {
            if (![QQApiInterface isQQInstalled]) {
                notInstalled([QQApiInterface isQQInstalled], @"未安裝QQ客戶端尺栖,請安裝后重新分享");
                return;
            }
        }
    }
    SSDKPlatformType platformType =[[self class] getPlatformTypeWithButtonTag:btnTag];
    int SSDKContentType =SSDKContentTypeAuto;
    if (platformType ==SSDKPlatformTypeSinaWeibo) {
        SSDKContentType = SSDKContentTypeWebPage;
    }
    if (platformType == SSDKPlatformSubTypeWechatTimeline) {
        title = text;
    }
    if (!title || title.length == 0) {
        title = @"XXXXX";
    }
    NSInteger channelType =[[self class] getChannelTypeWithButtonTag:btnTag];
    NSMutableDictionary *shareParams = [NSMutableDictionary dictionary];
    [shareParams SSDKSetupShareParamsByText:text images:images url:url title:title type:SSDKContentType];
    [[self class] shareWithShareParams:shareParams platformType:platformType channelType:channelType success:success fail:fail cancel:cancel];
}

+ (SSDKPlatformType)getPlatformTypeWithButtonTag:(NSInteger)btnTag
{
    SSDKPlatformType platformType;
    
    switch (btnTag) {
        case 5:
            //新浪
            platformType = SSDKPlatformTypeSinaWeibo;
            
            break;
        case 1:
            //微信
            platformType = SSDKPlatformSubTypeWechatSession;
            break;
        case 3:
            //朋友圈
            platformType = SSDKPlatformSubTypeWechatTimeline;
            
            break;
        case 2:
            //qq
            platformType = SSDKPlatformSubTypeQQFriend;
            
            break;
        case 4:
            
            //qq空間
            // [[self class] chekoutQQAppInstalled];
            platformType = SSDKPlatformSubTypeQZone;
            
            break;
        default:
            platformType = SSDKPlatformSubTypeWechatTimeline;
            break;
    }
    
    return platformType;
}

+ (NSInteger)getChannelTypeWithButtonTag:(NSInteger)btnTag
{
    NSInteger channelType = 0;
    switch (btnTag) {
        case 5:
            //新浪
            channelType = 2;
            break;
        case 1:
            //微信
            channelType = 3;
            break;
        case 3:
            //朋友圈
            channelType = 4;
            break;
        case 2:
            //qq
            channelType = 1;
            break;
        case 4:
            //qq空間
            channelType = 5;
            break;
        default:
            
            break;
    }
    
    return channelType;
    
}
    
+ (void)shareWithShareParams:(NSMutableDictionary *)shareParams platformType:(SSDKPlatformType)platformType channelType:(NSInteger)channelType success:(void(^)(BOOL isSuccess,NSString * channelType))success
    fail:(void(^)(BOOL isFail))fail
    cancel:(void(^)(BOOL isCancel))cancel
{
    //使用客戶端分享
    [shareParams SSDKEnableUseClientShare];
    //進(jìn)行分享
    [ShareSDK share:platformType
         parameters:shareParams
     onStateChanged:^(SSDKResponseState state, NSDictionary *userData, SSDKContentEntity *contentEntity, NSError *error) {
         
         switch (state) {
             case SSDKResponseStateBegin: {
                 break;
             }
             case SSDKResponseStateSuccess: {
                 if (success) {
                     success(YES,[NSString stringWithFormat:@"%ld",channelType]);
                 }
                 break;
             }
             case SSDKResponseStateFail: {
                 if (fail) {
                     fail(YES);
                 }
                 break;
             }
             case SSDKResponseStateCancel: {
                 if (cancel) {
                     cancel(YES);
                 }
                 break;
             }
         }         
     }];
}

@end

功能效果

下面我們就看幾個分享的效果圖嫡纠。

效果1
效果2
效果3
效果4
效果5

可見,實現(xiàn)了分享。

后記

分享就到此結(jié)束了除盏,后期還會和分享更多的好玩的叉橱。謝謝大家的支持。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末痴颊,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子屡贺,更是在濱河造成了極大的恐慌蠢棱,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件甩栈,死亡現(xiàn)場離奇詭異泻仙,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)量没,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進(jìn)店門玉转,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人殴蹄,你說我怎么就攤上這事究抓。” “怎么了袭灯?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵刺下,是天一觀的道長。 經(jīng)常有香客問我稽荧,道長橘茉,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任姨丈,我火速辦了婚禮畅卓,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蟋恬。我一直安慰自己翁潘,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布歼争。 她就那樣靜靜地躺著唐础,像睡著了一般。 火紅的嫁衣襯著肌膚如雪一膨。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天洒沦,我揣著相機(jī)與錄音豹绪,去河邊找鬼蝉衣。 笑死,一個胖子當(dāng)著我的面吹牛淌喻,可吹牛的內(nèi)容都是我干的八拱。 我是一名探鬼主播灯萍,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼真屯,長吁一口氣:“原來是場噩夢啊……” “哼配深!你這毒婦竟也來了左敌?” 一聲冷哼從身側(cè)響起咬扇,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤经窖,失蹤者是張志新(化名)和其女友劉穎冰悠,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡班套,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年肢藐,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吱韭。...
    茶點(diǎn)故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡窖壕,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情瞻讽,我是刑警寧澤鸳吸,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站速勇,受9級特大地震影響晌砾,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜烦磁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一养匈、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧都伪,春花似錦呕乎、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至先誉,卻和暖如春湿刽,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背褐耳。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工诈闺, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人铃芦。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓雅镊,卻偏偏與公主長得像,于是被迫代替她去往敵國和親刃滓。 傳聞我的和親對象是個殘疾皇子仁烹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評論 2 348

推薦閱讀更多精彩內(nèi)容