天天看點

IOS CocoaPods 內建第三方sharesdk分享

一、擷取AppKey

如何在我們的官網注冊應用得到appkey,請點選連結看裡面的操作步驟。

二、通過CocoaPods安裝

1、首先 cd 至項目的根目錄,執行 pod setup;

2、按需在 Podfile 檔案中添加指令;

# 主子產品(必須)
pod 'ShareSDK3'
# Mob 公共庫(必須) 如果同時內建SMSSDK iOS2.0:可看此注意事項:http://bbs.mob.com/thread-20051-1-1.html
pod 'MOBFoundation'

# UI子產品(非必須,需要用到ShareSDK提供的分享菜單欄和分享編輯頁面需要以下1行)
pod 'ShareSDK3/ShareSDKUI'

# 平台SDK子產品(對照一下平台,需要的加上。如果隻需要QQ、微信、新浪微網誌,隻需要以下3行)
pod 'ShareSDK3/ShareSDKPlatforms/QQ'
pod 'ShareSDK3/ShareSDKPlatforms/SinaWeibo'
pod 'ShareSDK3/ShareSDKPlatforms/WeChat'

# ShareSDKPlatforms子產品其他平台,按需添加
# 如果需要的平台沒有對應的平台語句,有2種情況——1、不需要添加這個平台的語句,如Twitter就是這個情況。2、ShareSDK暫時不支援此平台。
pod 'ShareSDK3/ShareSDKPlatforms/RenRen'
pod 'ShareSDK3/ShareSDKPlatforms/AliPaySocial'
pod 'ShareSDK3/ShareSDKPlatforms/Kakao'
pod 'ShareSDK3/ShareSDKPlatforms/Yixin'
pod 'ShareSDK3/ShareSDKPlatforms/Facebook'
pod 'ShareSDK3/ShareSDKPlatforms/Copy'
pod 'ShareSDK3/ShareSDKPlatforms/Evernote'
pod 'ShareSDK3/ShareSDKPlatforms/GooglePlus'
pod 'ShareSDK3/ShareSDKPlatforms/Instagram'
pod 'ShareSDK3/ShareSDKPlatforms/Instapaper'
pod 'ShareSDK3/ShareSDKPlatforms/Line'
pod 'ShareSDK3/ShareSDKPlatforms/Mail'
pod 'ShareSDK3/ShareSDKPlatforms/SMS'
pod 'ShareSDK3/ShareSDKPlatforms/WhatsApp'
pod 'ShareSDK3/ShareSDKPlatforms/WeChat'

# 使用配置檔案分享子產品(非必需)
pod 'ShareSDK3/ShareSDKConfigurationFile'

# 擴充子產品(在調用可以彈出我們UI分享方法的時候是必需的)
pod 'ShareSDK3/ShareSDKExtension'

# ShareSDK目前支援一下平台移除平台SDK(不影響分享和授權等功能)
# 使用以下平台語句替換ShareSDKPlatforms子產品的語句即可
pod 'ShareSDK3/PlatformConnector/QQ'
pod 'ShareSDK3/PlatformConnector/SinaWeibo'
pod 'ShareSDK3/PlatformConnector/WeChat'
pod 'ShareSDK3/PlatformConnector/RenRen'
pod 'ShareSDK3/PlatformConnector/AliPaySocial'
           

3、執行 pod update。

CocoaPods的介紹和使用,可以參考:網頁連結

如果安裝過程中遇到問題,可以參考:網頁連結

注意:3.5.2版本之後,需要內建的指令寫法點選此處

三、快速內建

第一步:設定ShareSDK的Appkey并初始化對應的第三方社交平台 打開AppDelegate.m(代表你的工程名字)導入頭檔案

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

//騰訊開放平台(對應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>
           

在- (BOOL)application: didFinishLaunchingWithOptions:方法中調用registerApp方法來初始化SDK并且初始化第三方平台(各社交平台申請APPkey 的網址及申請流程彙總)

-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
      /**
     *  設定ShareSDK的appKey,如果尚未在ShareSDK官網注冊過App,請移步到http://mob.com/login 登入背景進行應用注冊,
     *  在将生成的AppKey傳入到此方法中。
     *  方法中的第二個第三個參數為需要連接配接社交平台SDK時觸發,
     *  在此事件中寫入連接配接代碼。第四個參數則為配置本地社交平台時觸發,根據傳回的平台類型來配置平台資訊。
     *  如果您使用的時服務端托管平台資訊時,第二、四項參數可以傳入nil,第三項參數則根據服務端托管平台來決定要連接配接的社交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;
                  default:
                    break;
                }
          }
          onConfiguration:^(SSDKPlatformType platformType, NSMutableDictionary *appInfo) 
          {

              switch (platformType)
              {
                  case SSDKPlatformTypeSinaWeibo:
                      //設定新浪微網誌應用資訊,其中authType設定為使用SSO+Web形式授權
                      [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對應一個break不要忘記填寫,不然很可能有不必要的錯誤,新浪微網誌的外部庫如果不要用戶端分享或者不需要加關注微網誌的功能可以不添加,否則要添加,QQ,微信,google+這些外部庫檔案必須要加)

第二步:添加實作代碼 打開需要內建分享功能的視圖源碼,把如下代碼複制并粘貼到你要分享的位置,例如到響應分享按鈕的方法中。并且修改相應的參數即可。

1.需要在分享的試圖中導入的頭檔案

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

2.調用構造分享參數接口和分享的接口

//1、建立分享參數
    NSArray* imageArray = @[[UIImage imageNamed:@"shareImg.png"]];
    (注意:圖檔必須要在Xcode左邊目錄裡面,名稱必須要傳正确,如果要分享網絡圖檔,可以這樣傳iamge參數 images:@[@"http://mob.com/Assets/images/logo.png?v=20150320"])
    if (imageArray) {

        NSMutableDictionary *shareParams = [NSMutableDictionary dictionary];
        [shareParams SSDKSetupShareParamsByText:@"分享内容"
                                         images:imageArray
                                            url:[NSURL URLWithString:@"http://mob.com"]
                                          title:@"分享标題"
                                           type:SSDKContentTypeAuto];
 //2、分享(可以彈出我們的分享菜單和編輯界面)
        [ShareSDK showShareActionSheet:nil //要顯示菜單的視圖, iPad版中此參數作為彈出菜單的參照視圖,隻有傳這個才可以彈出我們的分享菜單,可以傳分享的按鈕對象或者自己建立小的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;
                       }];
           

編譯并運作後,點選分享按鈕就成功發送到社交平台的話說明你已經基本內建成功了。但是,為了使您的使用者有更好的分享體驗,以及您的應用有更多的分享量,更好地在社交平台上傳播,我們建議您參考“進階功能”的指引進行SSO(免登入)和更多社交平台的設定。

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

IOS CocoaPods 內建第三方sharesdk分享

打開AppDelegate.m(代表你的工程名字)檔案,導入微信SDK的頭檔案并增加微信的外部庫接口

#import <ShareSDKConnector/ShareSDKConnector.h>
//微信SDK頭檔案
#import "WXApi.h"
//初始化的import參數注意要連結原生微信SDK。
case SSDKPlatformTypeWechat:
     [ShareSDKConnector connectWeChat:[WXApi class]];
break;
           

可選:支援QQ所需的相關配置及代碼 登入QQ互聯(http://connect.qq.com/ )注冊成為開發者并登記應用取得AppId,然後打開下圖位置,在URL Types中添加QQ的AppID,其格式為:”QQ” + AppId的16進制(如果appId轉換的16進制數不夠8位則在前面補0,如轉換的是:5FB8B52,則最終填入為:QQ05FB8B52 注意:轉換後的字母要大寫) 轉換16進制的方法:echo ‘ibase=10;obase=16;801312852′ |bc,其中801312852為QQ的AppID,見下圖

IOS CocoaPods 內建第三方sharesdk分享
IOS CocoaPods 內建第三方sharesdk分享

然後打開工程中的AppDelegate.m(代表你的工程名字)檔案,導入QQSDK的頭檔案并增加QQ的外部庫檔案接口:

#import <ShareSDK/ShareSDK.h>
#import <ShareSDKConnector/ShareSDKConnector.h>
//騰訊開放平台(對應QQ和QQ空間)SDK頭檔案
#import <TencentOpenAPI/TencentOAuth.h>
#import <TencentOpenAPI/QQApiInterface.h>
//初始化的import參數注意要連結原生QQSDK。
 case SSDKPlatformTypeQQ:
      [ShareSDKConnector connectQQ:[QQApiInterface class] tencentOAuthClass:[TencentOAuth class]];
 break;
           

可選:配置新浪微網誌、Facebook的SSO 登入新浪微網誌和facebook的開放平台,擷取AppID 。新浪微網誌的url scheme的設定格式為wb+AppID,facebook的設定格式為fb+AppID。具體參考下圖:

IOS CocoaPods 內建第三方sharesdk分享

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

IOS CocoaPods 內建第三方sharesdk分享

當新浪微網誌需要用戶端分享或者增加關注微網誌的功能,需要打開工程中的AppDelegate.m(代表你的工程名字)檔案,導入新浪微網誌SDK的頭檔案并增加新浪微網誌的外部庫檔案接口:

#import <ShareSDK/ShareSDK.h>
#import <ShareSDKConnector/ShareSDKConnector.h>
//新浪微網誌SDK頭檔案
#import "WeiboSDK.h"
//初始化的import參數注意要連結原生新浪微網誌SDK。
 case SSDKPlatformTypeSinaWeibo:
      [ShareSDKConnector connectWeibo:[WeiboSDK class]];
 break;