iOS ShareSDK 第三方分享

由于近期工作需要自己抽時間搞了一下第三方分享,這里使用的是shareSDK的第三方,在使用的過程中有一些心得和體會,特在此和大家分享一下~

一、獲取App Key

首先,您需要登錄shareSDK 的官方網(wǎng)站登錄或者注冊一個賬戶,注冊成功后可以選擇進入服務(wù)器的后臺

廢話不多說,直接上圖!

這里演示的是我已經(jīng)創(chuàng)建好的實例APP,如果第一次創(chuàng)建直接添加即可.


add.png
interduce.png

點擊左側(cè)列表最下邊的應(yīng)用信息,可以顯示你需要添加分享的APP(注意這里的項目一定是要在AppStore上線的),其中App Key 和 App Secret是在創(chuàng)建應(yīng)用時SharrSDK自動生成的,接下來的應(yīng)用名稱,簡介,和應(yīng)用分類按自己的需求填寫就行,這里不多做介紹了.

下面介紹一下第二欄,IOS相關(guān)信息,這里很重要,其中1,2,5是必填的,2,4填一個就行,3為選填(Optional),第一點Bundle ID 不用多說了吧,直接從你的項目里獲取就行(需要注意的是一定要填你上線APP的切忌不要填測試版的),第二點iPhone Store ID(即開發(fā)者中心的 APP ID) 可以從蘋果開發(fā)中心獲取,蘋果開發(fā)平臺會為每個成功上線項目生成一個獨有的APP ID,第三點選填,這里不做介紹,第四點如果你的項目有Pad版本的,這里就需要填寫了,獲取方法和第二點類似.

圖標(biāo),沒什么說的,上傳你應(yīng)用圖片即可,這里對圖標(biāo)尺寸的大小ShareSDK 并沒有明確的規(guī)定,但個人覺得清晰就好,哈哈~

二、下載SDK

SDK分為簡潔版和標(biāo)準(zhǔn)版,這里講解的是簡潔版,標(biāo)準(zhǔn)版的話,個人感覺和簡潔版沒什么區(qū)別哈哈

下載ShareSDK 包下載后解壓壓縮包如圖所示:

解壓后.jpg

文件夾libraries就是分享所需要的SDK了(使用時直接將這個文件夾拖入工程),其目錄下又有相關(guān)SDK和文件夾extends,這里對其做一下簡單介紹其中extends文件夾下是你想要使用分享的社交軟件相應(yīng)SDK(比如:微博,QQ,微信等)剩下得SDK是shareSDK公司集成的相關(guān)SDK,功能介紹如下:

    1. extends:第三方平臺SDK。(不需要的平臺的SDK可直接移除)
  • 2.MOBFoundation.framework:基礎(chǔ)功能框架。(必要)
  • 3.ShareSDK.bundle:ShareSDK資源文件。(必要)
  • 4.ShareSDK.framework:核心靜態(tài)庫。(必要)
  • 5.ShareSDKConnector.framework:用于ShareSDK框架與外部框架連接 的代理框架插件。使用第三方SDK時必要。
  • 6.ShareSDKExtension.framework:對ShareSDK功能的擴展框架插件。目前主要提供第三方平臺登錄、一鍵分享、截屏分享、搖一搖分享等相關(guān)功能。需要使用以上功能時必要。
  • 7.ShareSDKInterfaceAdapter.framework:ShareSDK v2.x對簡潔版的接口兼容包。(建議直接使用簡潔版接口,盡量不使用這個兼容包)
  • 8.ShareSDKUI.bundle:分享菜單欄和分享編輯頁面資源包。(如果自定義這些UI可直接移除)
  • 9.ShareSDKUI.framework:分享菜單欄和分享編輯頁面。(如果自定義這些UI可直接移除)

三、快速集成

第一步:將libraries 文件拖入你的工程目錄:

文檔2.png
](http://upload-images.jianshu.io/upload_images/790011-044e4c2bfeed1c6a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

注意:請務(wù)必在上述步驟中選擇“Create groups for any added folders”單選按鈕組。如果你選擇“Create folder references for any added folders”,一個藍色的文件夾引用將被添加到項目并且將無法找到它的資源。

第二步:添加依賴庫 添加步驟見下圖:

添加庫.png
必須添加的依賴庫如下(Xcode 7 下 .dylib庫后綴名更改為.tbd):
  • 1.libicucore.dylib
  • 2.libz.dylib
  • 3.libstdc++.dylib
  • 4.JavaScriptCore.framework
以下依賴庫根據(jù)社交平臺添加:

新浪微博SDK依賴庫

  • 1.ImageIO.framework
  • 2.AdSupport.framework
  • 3.libsqlite3.dylib

QQ好友和QQ空間SDK依賴庫

  • 1.libsqlite3.dylib
  • 2.微信SDK依賴庫
  • 3.libsqlite3.dylib

短信和郵件需要依賴庫

  • 1.MessageUI.framework

Google+SDK依賴庫

  • 1.CoreMotion.framework
  • 2.CoreLocation.framework
  • 3.MediaPlayer.framework
  • 4.AssetsLibrary.framework
  • 5.AddressBook.framework

第三步:設(shè)置ShareSDK的Appkey并初始化對應(yīng)的第三方社交平臺 打開AppDelegate.m(代表你的工程名字)導(dǎo)入頭文件

#import <ShareSDK/ShareSDK.h>
#import <ShareSDKConnector/ShareSDKConnector.h>

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

//微信SDK頭文件
 #import "WXApi.h"

//新浪微博SDK頭文件
 #import "WeiboSDK.h"
//新浪微博SDK需要在項目Build Settings中的Other Linker Flags添加"-ObjC"

//人人SDK頭文件
#import <RennSDK/RennSDK.h>

//GooglePlus SDK頭文件
#import <GooglePlus/GooglePlus.h>
//GooglePlus SDK需要在項目Build Settings中的Other Linker Flags添加"-ObjC"

在- (BOOL)application: didFinishLaunchingWithOptions:方法中調(diào)用registerApp方法來初始化SDK并且初始化第三方平臺
- (BOOL)application:(UIApplication )application didFinishLaunchingWithOptions: (NSDictionary )launchOptions
{
/

* 設(shè)置ShareSDK的appKey,如果尚未在ShareSDK官網(wǎng)注冊過App,請移步到http://mob.com/login 登錄后臺進行應(yīng)用注冊,
* 在將生成的AppKey傳入到此方法中。
* 方法中的第二個第三個參數(shù)為需要連接社交平臺SDK時觸發(fā),
* 在此事件中寫入連接代碼。第四個參數(shù)則為配置本地社交平臺時觸發(fā),根據(jù)返回的平臺類型來配置平臺信息。
* 如果您使用的時服務(wù)端托管平臺信息時,第二、四項參數(shù)可以傳入nil,第三項參數(shù)則根據(jù)服務(wù)端托管平臺來決定要連接的社交SDK。
*/
[ShareSDK registerApp:@"iosv1101"`

       activePlatforms:@[
                        @(SSDKPlatformTypeSinaWeibo),
                        @(SSDKPlatformTypeMail),
                        @(SSDKPlatformTypeSMS),
                        @(SSDKPlatformTypeCopy),
                        @(SSDKPlatformTypeWechat),
                        @(SSDKPlatformTypeQQ),
                        @(SSDKPlatformTypeRenren),
                        @(SSDKPlatformTypeGooglePlus)]
       onImport:^(SSDKPlatformType platformType)    
       {
           switch (platformType)
           {
              case SSDKPlatformTypeWechat:
                   [ShareSDKConnector connectWeChat:[WXApi class]];
                break;
              case SSDKPlatformTypeQQ:
                   [ShareSDKConnector connectQQ:[QQApiInterface class] tencentOAuthClass:[TencentOAuth class]];
                break;
              case SSDKPlatformTypeSinaWeibo:
                      [ShareSDKConnector connectWeibo:[WeiboSDK class]];
                break;
              case SSDKPlatformTypeRenren:
                      [ShareSDKConnector connectRenren:[RennClient class]];
                break;
              case SSDKPlatformTypeGooglePlus:
                      [ShareSDKConnector connectGooglePlus:[GPPSignIn class]
                                                   shareClass:[GPPShare class]];
                break;
              default:
                break;
            }
      }
      onConfiguration:^(SSDKPlatformType platformType, NSMutableDictionary *appInfo) 
      {

          switch (platformType)
          {
              case SSDKPlatformTypeSinaWeibo:
                  //設(shè)置新浪微博應(yīng)用信息,其中authType設(shè)置為使用SSO+Web形式授權(quán)
                  [appInfo SSDKSetupSinaWeiboByAppKey:@"568898243"
                                            appSecret:@"38a4f8204cc784f81f9f0daaf31e02e3"
                                          redirectUri:@"http://www.sharesdk.cn"
                                             authType:SSDKAuthTypeBoth];
               break;
              case SSDKPlatformTypeWechat:
                  [appInfo SSDKSetupWeChatByAppId:@"wx4868b35061f87885"
                                        appSecret:@"64020361b8ec4c99936c0e3999a9f249"];
               break;
              case SSDKPlatformTypeQQ:
                  [appInfo SSDKSetupQQByAppId:@"100371282"
                                       appKey:@"aed9b0303e3ed1e27bae87c33761161d"
                                     authType:SSDKAuthTypeBoth];
               break;
              case SSDKPlatformTypeRenren:
                  [appInfo        SSDKSetupRenRenByAppId:@"226427"
                                           appKey:@"fc5b8aed373c4c27a05b712acba0f8c3"
                                        secretKey:@"f29df781abdd4f49beca5a2194676ca4"
                                         authType:SSDKAuthTypeBoth];
                break;
               case SSDKPlatformTypeGooglePlus:
                  [appInfo SSDKSetupGooglePlusByClientID:@"232554794995.apps.googleusercontent.com"
                                            clientSecret:@"PEdFgtrMw97aCvf0joQj7EMk"
                                             redirectUri:@"http://localhost"
                                                authType:SSDKAuthTypeBoth];
                break;
               default:
                break;
          }
      }];
 return YES;
}

(注意:每一個case對應(yīng)一個break不要忘記填寫,不然很可能有不必要的錯誤,新浪微博的外部庫如果不要客戶端分享或者不需要加關(guān)注微博的功能可以不添加,否則要添加,QQ,微信,google+這些外部庫文件必須要加)

第四步:添加實現(xiàn)代碼 打開需要集成分享功能的視圖源碼,把如下代碼復(fù)制并粘貼到你要分享的位置,例如到響應(yīng)分享按鈕的方法中。并且修改相應(yīng)的參數(shù)即可。

1.需要在分享的試圖中導(dǎo)入的頭文件

#import <ShareSDK/ShareSDK.h>
#import <ShareSDKUI/ShareSDK+SSUI.h>

2.調(diào)用構(gòu)造分享參數(shù)接口和分享的接口

  //1、創(chuàng)建分享參數(shù)
NSArray* imageArray = @[[UIImage imageNamed:@"shareImg.png"]];
(注意:圖片必須要在Xcode左邊目錄里面,名稱必須要傳正確,如果要分享網(wǎng)絡(luò)圖片,可以這樣傳iamge參數(shù) images:@[@"http://mob.com/Assets/images/logo.png?v=20150320"])
if (imageArray) {

    NSMutableDictionary *shareParams = [NSMutableDictionary dictionary];
    [shareParams SSDKSetupShareParamsByText:@"分享內(nèi)容"
                                     images:imageArray
                                        url:[NSURL URLWithString:@"http://mob.com"]
                                      title:@"分享標(biāo)題"
                                       type:SSDKContentTypeAuto];
 //2、分享(可以彈出我們的分享菜單和編輯界面)
    [ShareSDK showShareActionSheet:nil //要顯示菜單的視圖, iPad版中此參數(shù)作為彈出菜單的參照視圖,只有傳這個才可以彈出我們的分享菜單,可以傳分享的按鈕對象或者自己創(chuàng)建小的view 對象,iPhone可以傳nil不會影響
                             items:nil
                       shareParams:shareParams
               onShareStateChanged:^(SSDKResponseState state, SSDKPlatformType platformType, NSDictionary *userData, SSDKContentEntity *contentEntity, NSError *error, BOOL end) {

                   switch (state) {
                       case SSDKResponseStateSuccess:
                       {
                           UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"分享成功"
                                                                               message:nil
                                                                              delegate:nil
                                                                     cancelButtonTitle:@"確定"
                                                                     otherButtonTitles:nil];
                           [alertView show];
                           break;
                       }
                       case SSDKResponseStateFail:
                       {
                           UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"分享失敗"
                                                                               message:[NSString stringWithFormat:@"%@",error]
                                                                              delegate:nil
                                                                     cancelButtonTitle:@"OK"
                                                                     otherButtonTitles:nil, nil];
                            [alert show];
                            break;
                        }
                        default:
                           break;
                        }
                }  
    ];}

編譯并運行后,點擊分享按鈕就成功發(fā)送到社交平臺的話說明你已經(jīng)基本集成成功了。但是,為了使您的用戶有更好的分享體驗,以及您的應(yīng)用有更多的分享量,更好地在社交平臺上傳播,我們建議您參考“進階功能”的指引進行SSO(免登錄)和更多社交平臺的設(shè)置。

下面是SSO設(shè)置

可選:支持微信所需的相關(guān)配置及代碼 在微信開放平臺(http://open.weixin.qq.com/ )注冊應(yīng)用并取得應(yīng)用的AppID,然后打開下圖位置,在URL Types中添加微信AppID

微信.png

打開AppDelegate.m(代表你的工程名字)文件,導(dǎo)入微信SDK的頭文件并增加微信的外部庫接口
#import <ShareSDKConnector/ShareSDKConnector.h>
//微信SDK頭文件
#import "WXApi.h"
//初始化的import參數(shù)注意要鏈接原生微信SDK。
case SSDKPlatformTypeWechat:
[ShareSDKConnector connectWeChat:[WXApi class]];
break;
可選:支持QQ所需的相關(guān)配置及代碼 登錄QQ互聯(lián)(http://connect.qq.com/ )注冊成為開發(fā)者并登記應(yīng)用取得AppId,然后打開下圖位置,在URL Types中添加QQ的AppID,其格式為:”QQ” + AppId的16進制(如果appId轉(zhuǎn)換的16進制數(shù)不夠8位則在前面補0,如轉(zhuǎn)換的是:5FB8B52,則最終填入為:QQ05FB8B52 注意:轉(zhuǎn)換后的字母要大寫) 轉(zhuǎn)換16進制的方法:echo ‘ibase=10;obase=16;801312852′|bc,其中801312852為QQ的AppID,見下圖

轉(zhuǎn)碼.png

QQ的有些小蛋疼,因為要轉(zhuǎn)十六進制碼,如果覺得上面的命令行轉(zhuǎn)碼比較麻煩的話,還可以使用網(wǎng)上的在線轉(zhuǎn)碼,這里給出開源中國的在線轉(zhuǎn)碼,呵呵,秒轉(zhuǎn)!
轉(zhuǎn)碼完成后,需要在十六進制碼的前面加上QQ的前綴,以及將十六進制碼的字母大寫,一定要大寫,切記切記!

QQ.png

然后打開工程中的AppDelegate.m(代表你的工程名字)文件,導(dǎo)入QQSDK的頭文件并增加QQ的外部庫文件接口:
#import <ShareSDK/ShareSDK.h>
#import <ShareSDKConnector/ShareSDKConnector.h>
//騰訊開放平臺(對應(yīng)QQ和QQ空間)SDK頭文件
#import <TencentOpenAPI/TencentOAuth.h>
#import <TencentOpenAPI/QQApiInterface.h>
//初始化的import參數(shù)注意要鏈接原生QQSDK。
case SSDKPlatformTypeQQ:
[ShareSDKConnector connectQQ:[QQApiInterface class] tencentOAuthClass:[TencentOAuth class]];
break;
可選:配置新浪微博、Facebook的SSO 登錄新浪微博和facebook的開放平臺,獲取AppID 。新浪微博的url scheme的設(shè)置格式為wb+AppID,facebook的設(shè)置格式為fb+AppID。具體參考下圖:

新浪微博.png

附:目前的新浪微博SDK需要在項目的Build Settings中的Other Linker Flags添加”-ObjC”,如果不配置有可能會崩潰。步驟如下:
添加objc.png

當(dāng)新浪微博需要客戶端分享或者增加關(guān)注微博的功能,需要打開工程中的AppDelegate.m(代表你的工程名字)文件,導(dǎo)入新浪微博SDK的頭文件并增加新浪微博的外部庫文件接口:
#import <ShareSDK/ShareSDK.h>
#import <ShareSDKConnector/ShareSDKConnector.h>
//新浪微博SDK頭文件
#import "WeiboSDK.h"
//初始化的import參數(shù)注意要鏈接原生新浪微博SDK。
case SSDKPlatformTypeSinaWeibo:
[ShareSDKConnector connectWeibo:[WeiboSDK class]];
break;
詳情可參考:shareSDK官方文檔

四、iOS9如何適配

1、大部分社交平臺接口不支持https協(xié)議

作為開發(fā)者大家想必都知道蘋果在iOS9發(fā)布后,將http協(xié)議升級為https安全協(xié)議。因此在iOS9下,系統(tǒng)默認會攔截對http協(xié)議接口的訪問,因此無法獲取http協(xié)議接口的數(shù)據(jù)。而對ShareSDK來說,具體表現(xiàn)可能是,無法授權(quán)、分享、獲取用戶信息等。

那么該如何解決呢?這里提供一個簡單暴力的方法——暫時退回到http協(xié)議
具體方法:

在項目的info.plist中添加一個Key:NSAppTransportSecurity,類型為字典類型。

然后給它添加一個Key:NSAllowsArbitraryLoads,類型為Boolean類型,值為YES;

白名單.png

2、大部分社交平臺SDK不支持bitcode

iOS 9新建項目默認需要支持bitcode,而不支持bitcode的SDK會導(dǎo)致無法編譯運行。

解決方案:

(1)、暫時關(guān)閉對bitcode的支持(建議),方法如下圖

(2)、移除不支持bitcode的平臺SDK。

bitcode.png

在iOS 9下涉及到平臺客戶端跳轉(zhuǎn),系統(tǒng)會自動到項目info.plist下檢測是否設(shè)置平臺Scheme。對于需要配置的平臺,如果沒有配置,就無法正常跳轉(zhuǎn)平臺客戶端。因此要支持客戶端的分享和授權(quán)等,需要配置Scheme名單。

具體方法:

1)、在項目的info.plist中添加一LSApplicationQueriesSchemes,類型為Array。

2)、然后給它添加一個需要支持的項目,類型為字符串類型;


Scheme.png

各平臺詳細URL請看:詳細URL

必看注意

1.在iOS9中,如果沒有添加上述白名單,系統(tǒng)會打印類似如下提示:
.-canOpenURL: failed for URL: “sinaweibohdsso://xxx” – error: “This app is not allowed to query for scheme sinaweibohdsso”(如下圖)
如沒有添加相關(guān)白名單,有可能導(dǎo)致分享失敗,例如不會跳轉(zhuǎn)微信,不會跳轉(zhuǎn)QQ等。
2.添加完上述所需的名單,系統(tǒng)依然會打印類似信息:
.-canOpenURL: failed for URL: “sinaweibohdsso://xxx” – error: “null”
這是系統(tǒng)打印的信息,目前是無法阻止其打印,即無法消除的
3.上述白名單,是技術(shù)人員通過不斷的測試收集整理所得,如果各位開發(fā)者朋友發(fā)現(xiàn)上表格有所遺漏,請根據(jù)系統(tǒng)信息添加相關(guān)白名單即可。

五、其他問題

1、自定義分享圖標(biāo)

如果你嫌棄shareSDK自帶的圖標(biāo)想換成自己的美美噠圖標(biāo)的話,你需要替換shareSDK的集成包,目錄如下

icon.png

這里圖標(biāo)名稱是固定的: sns_icon_xx@2x.png
如果你想修改圖標(biāo),把你的定制的圖標(biāo)講此文件下對應(yīng)的圖標(biāo)替換即可,注意要先刪除shareSDK自帶的再倒入,不然導(dǎo)不進去
替換完成效果:

圖標(biāo).jpg

2、修改分享平臺名稱

問題1.jpg

shareSDK 自帶的分享平臺名稱默認是英文的,如果想漢化的話,執(zhí)行操作如下:

漢化.png

如果漢化的名稱還不滿意,比如:QQ改成QQ好友分享,那你需要修改shareSDK的漢化包

漢字修改.png

3、去掉朋友圈收藏、QQ空間

如果你的項目需求并沒有要求QQ空間分享,和微信朋友圈收藏,但shareSDK 自帶的有,想去掉怎么辦?
QQ和微信默認的SDK都導(dǎo)入的是主平臺,而主平臺自帶QQ空間(朋友圈收藏),要想去掉的話我們只能將主平臺替換為響應(yīng)的子平臺:

 [ShareSDK registerApp:@"XXXXXXX"
        activePlatforms:@[
                        // 不要使用微信總平臺進行初始化
                        //@(SSDKPlatformTypeWechat),
                        // 使用微信子平臺進行初始化,即可
                        @(SSDKPlatformSubTypeWechatSession),
                        @(SSDKPlatformSubTypeWechatTimeline),
                        //不要使用QQ總平臺進行初始化
                        //@(SSDKPlatformTypeQQ),
                        //使用QQ子平臺進行初始化
                        @(SSDKPlatformSubTypeQQFriend)]
                        ]
        onImport:^(SSDKPlatformType platformType) {

                 switch (platformType)
                 {
                     case SSDKPlatformTypeWechat:
                         [ShareSDKConnector connectWeChat:[WXApi class]];
                         break;
                    default:
                         break;
                 }

             }
        onConfiguration:^(SSDKPlatformType platformType, NSMutableDictionary *appInfo) {

          switch (platformType)
          {
               case SSDKPlatformTypeWechat:
                  [appInfo SSDKSetupWeChatByAppId:@"wx4868b35061f87885"
                                        appSecret:@"64020361b8ec4c99936c0e3999a9f249"];
                  break;
                case SSDKPlatformTypeQQ:
                  [appInfo SSDKSetupQQByAppId:@"100371282"
                                       appKey:@"aed9b0303e3ed1e27bae87c33761161d"
                                     authType:SSDKAuthTypeBoth];
                  break;
               default:
                  break;
          }
      }];

4、跳過分享的編輯界面

設(shè)置彈出分享菜單,直接點擊菜單中的平臺分享(跳過分享的編輯界面)。

//先構(gòu)造分享參數(shù):
 NSMutableDictionary *shareParams = [NSMutableDictionary dictionary];
 [shareParams SSDKSetupShareParamsByText:@"分享內(nèi)容"
                                     images:@[[UIImage imageNamed:@"shareImg.png"]]
                                        url:[NSURL URLWithString:@"http://mob.com"]
                                      title:@"分享標(biāo)題"
                                       type:SSDKContentTypeAuto];
  //調(diào)用分享的方法
  SSUIShareActionSheetController *sheet = [ShareSDK showShareActionSheet:view
                           items:nil
                     shareParams:shareParams
                  onShareStateChanged:^(SSDKResponseState state, SSDKPlatformType platformType, NSDictionary *userData, SSDKContentEntity *contentEntity, NSError *error, BOOL end) {
                         switch (state) {
                                       case SSDKResponseStateSuccess:
                                                NSLog(@"分享成功!");
                                                break;
                                       case SSDKResponseStateFail:
                                                NSLog(@"分享失敗%@",error);
                                                break;
                                       case SSDKResponseStateCancel:
                                                 NSLog(@"分享已取消");
                                                 break;
                                       default:
                                                  break;
                                     }
                               }];
//刪除和添加平臺示例
 [sheet.directSharePlatforms removeObject:@(SSDKPlatformTypeWechat)];(默認微信,QQ,QQ空間都是直接跳客戶端分享,加了這個方法之后,可以跳分享編輯界面分享)
 [sheet.directSharePlatforms addObject:@(SSDKPlatformTypeSinaWeibo)];(加了這個方法之后可以不跳分享編輯界面,直接點擊分享菜單里的選項,直接分享)

5、自定義分享菜單欄樣式

如何自定義分享菜單呢?你可以這樣:

// 彈出分享菜單需要導(dǎo)入的頭文件
#import <ShareSDKUI/ShareSDK+SSUI.h>
// 自定義分享菜單欄需要導(dǎo)入的頭文件
#import <ShareSDKUI/SSUIShareActionSheetStyle.h>

//1、創(chuàng)建分享參數(shù)(必要)
NSMutableDictionary *shareParams = [NSMutableDictionary dictionary];
NSArray* imageArray = @[[UIImage imageNamed:@"圖片名.png"]];
 (注意:圖片必須要在Xcode左邊目錄里面,名稱必須要傳正確,如果要分享網(wǎng)絡(luò)圖片,可以這樣傳iamge參數(shù) images:@[@"http://mob.com/Assets/images/logo.png?v=20150320"])
[shareParams SSDKSetupShareParamsByText:@"分享內(nèi)容"
                                 images:imageArray
                                    url:[NSURL URLWithString:@"http://mob.com"]
                                  title:@"分享標(biāo)題"
                                   type:SSDKContentTypeAuto];

// 設(shè)置分享菜單欄樣式(非必要)
// 設(shè)置分享菜單的背景顏色
[SSUIShareActionSheetStyle setActionSheetBackgroundColor:[UIColor colorWithRed:249/255.0 green:0/255.0 blue:12/255.0 alpha:0.5]];
// 設(shè)置分享菜單顏色
[SSUIShareActionSheetStyle setActionSheetColor:[UIColor colorWithRed:21.0/255.0 green:21.0/255.0 blue:21.0/255.0 alpha:1.0]];
// 設(shè)置分享菜單-取消按鈕背景顏色
[SSUIShareActionSheetStyle setCancelButtonBackgroundColor:[UIColor colorWithRed:21.0/255.0 green:21.0/255.0 blue:21.0/255.0 alpha:1.0]];
// 設(shè)置分享菜單-取消按鈕的文本顏色
[SSUIShareActionSheetStyle setCancelButtonLabelColor:[UIColor blackColor]];
// 設(shè)置分享菜單-社交平臺文本顏色
[SSUIShareActionSheetStyle setItemNameColor:[UIColor whiteColor]];
// 設(shè)置分享菜單-社交平臺文本字體
[SSUIShareActionSheetStyle setItemNameFont:[UIFont systemFontOfSize:10]];
//設(shè)置分享編輯界面的導(dǎo)航欄顏色
[SSUIEditorViewStyle setiPhoneNavigationBarBackgroundColor:[UIColor blackColor]];
//設(shè)置編輯界面標(biāo)題顏色
[SSUIEditorViewStyle setTitleColor:[UIColor redColor]];
//設(shè)置取消發(fā)布標(biāo)簽文本顏色
[SSUIEditorViewStyle setCancelButtonLabelColor:[UIColor blueColor]];
[SSUIEditorViewStyle setShareButtonLabelColor:[UIColor blueColor]];
//設(shè)置分享編輯界面狀態(tài)欄風(fēng)格
[SSUIEditorViewStyle setStatusBarStyle:UIStatusBarStyleLightContent];
//設(shè)置簡單分享菜單樣式
[SSUIShareActionSheetStyle setShareActionSheetStyle:ShareActionSheetStyleSimple];

//2、彈出ShareSDK分享菜單
[ShareSDK showShareActionSheet:view
                         items:nil
                   shareParams:shareParams
           onShareStateChanged:^(SSDKResponseState state, SSDKPlatformType platformType, NSDictionary *userData, SSDKContentEntity *contentEntity, NSError *error, BOOL end) { ...... }

不過,在iOS端的自定義分享菜單上shareSDK 給出開發(fā)者的自定義只是簡單的修改一下背景顏色、修改文本顏色等,并無法大面積修改UI,如果非要修改的話,開發(fā)者只能重新定制UI,包括圖標(biāo)排版,每個分享平臺的響應(yīng)等等,而相比iOS端,安卓端可以直接繼承其官方方法修改UI...有點小坑啊,希望以后多做改進!

假如你想自定義UI的話,你需要用自己的方法寫界面,寫好了之后可以調(diào)用ShareSDKd的無UI的分享方法

//創(chuàng)建分享參數(shù)
NSMutableDictionary *shareParams = [NSMutableDictionary dictionary];
[shareParams SSDKSetupShareParamsByText:@"分享內(nèi)容"
                                     images:images //傳入要分享的圖片
                                        url:[NSURL URLWithString:@"http://mob.com"]
                                      title:@"分享標(biāo)題"
                                       type:SSDKContentTypeAuto];
 //進行分享
 [ShareSDK share:SSDKPlatformTypeSinaWeibo //傳入分享的平臺類型
     parameters:shareParams
onStateChanged:^(SSDKResponseState state, NSDictionary *userData, SSDKContentEntity *contentEntity, NSError *error) { // 回調(diào)處理....}];
}

另外,現(xiàn)在ShareSDK 開源了他們的自定義UI,地址點這里

好了第三方分享就寫到這里了,希望此貼可以幫到你!同時也希望大家提出寶貴意見,大家一起交流學(xué)習(xí)。思密達!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,536評論 25 708
  • 原標(biāo)題 : IOS集成微信支付或者支付寶支付功能小結(jié) 2016.7.1。由于蘋果強制要求適配ipv6,本文demo...
    Leonmmmmm閱讀 33,191評論 50 133
  • 一群旅游的媽媽們帶著孩子們 選購著冰棍 爭著付款 拉著自拍桿合影 冰棍只有兩種 娃娃頭和老冰棍 娃娃頭很快拿光 只...
    陸然1閱讀 382評論 0 0
  • 近來,母親的身體大不如前了。 腿疼,腰疼等各種毛病,都紛紛找上門來,到醫(yī)院去檢查,醫(yī)生說,這是老毛病,與常年勞累有...
    花雨鳳飛H閱讀 543評論 4 3
  • 目錄 第一章 第二章 第三章 一來二去,我和許寧遠竟也熟識起來。 也許是當(dāng)時真的太小,幼稚的有些傻氣,我偷偷把許...
    桎篙閱讀 377評論 0 4