關于分享估計很多都用的是ShareSDK的社會化分享,簡單方便,支持的種類很多,但是一般的話都還是QQ,微信,新浪微博,騰訊微博為主。
最近需要導入一個分享的模塊,失敗了幾次之后最終成功,分享給大家,讓大家少走一些彎路,讓大家更快的搞定IOS分享的問題。
步驟如下:
-
先下載ShareSDK。
-
導入項目
-
導入所需要的一些庫文件
-
去各個開放平臺注冊自己的APPKey,創建自己的應用。
-
最后到項目里配置各個平臺的AppKey等等。
進入正文:
1.注冊ShareSDK的賬號,然后創建自己的應用(要用到APPKey),下載ShareSDK:http://sharesdk.mob.com/#/sharesdk,然后解壓,導入自己的項目里,接著就是按照官網上的添加額外的依賴庫,剩下的就是怎么把分享功能實現。
2.注冊各個平臺的AppKey
首先要注冊賬號,再接著創建應用,找到對應的AppKey即可。下面是比較常用的三個平臺的鏈接。
3.在代碼里注冊ShareSDK還有各個平臺。
首先要導入頭文件
#import <ShareSDK/ShareSDK.h> #import <ShareSDKConnector/ShareSDKConnector.h> #import <TencentOpenAPI/QQApiInterface.h> #import <TencentOpenAPI/TencentOAuth.h> #import "WXApi.h" #import "WeiboSDK.h"
接著只要在下面的這個方法里加入這段代碼就可以了
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions ;這個方法里加入這段代碼就可以(AppKey需要填寫自己的新浪微博還有回調地址都要一樣)。
代碼如下:
[ShareSDK registerApp:@"你注冊的ShareSDKAppKey" activePlatforms: //分享的平臺,這里只有新浪微博,QQ,微信 @[ @(SSDKPlatformTypeSinaWeibo), @(SSDKPlatformTypeWechat), @(SSDKPlatformTypeQQ) ] onImport:^(SSDKPlatformType platformType) { switch (platformType) { //同樣這里和上面一一對應 case SSDKPlatformTypeSinaWeibo: [ShareSDKConnector connectWeibo:[WeiboSDK class]]; break; case SSDKPlatformTypeWechat: [ShareSDKConnector connectWeChat:[WXApi class]]; break; case SSDKPlatformTypeQQ: [ShareSDKConnector connectQQ:[QQApiInterface class] tencentOAuthClass:[TencentOAuth class]]; break; default: break; } } onConfiguration:^(SSDKPlatformType platformType, NSMutableDictionary *appInfo) { switch (platformType) { //這里也是一樣和上面一一對應 case SSDKPlatformTypeSinaWeibo: //設置新浪微博應用信息,其中authType設置為使用SSO+Web形式授權 [appInfo SSDKSetupSinaWeiboByAppKey:@"新浪微博的AppKey" appSecret:@"新浪微博的Secret" redirectUri:@"回調地址" authType:SSDKAuthTypeBoth]; break; case SSDKPlatformTypeWechat: //設置微信應用信息 [appInfo SSDKSetupWeChatByAppId:@"微信的AppId" appSecret:@"微信的Secret"]; break; case SSDKPlatformTypeQQ: //設置QQ應用信息,其中authType設置為只用SSO形式授權 [appInfo SSDKSetupQQByAppId:@"QQ的AppId" appKey:@"QQ的AppKey" authType:SSDKAuthTypeSSO]; break; default: break; } } ];
4.接著就是寫分享的參數(就是觸發分享事件的地方,來調用分享的界面)。
首先也要導入頭文件
#import <ShareSDK/ShareSDK.h> #import <ShareSDKConnector/ShareSDKConnector.h> #import <TencentOpenAPI/QQApiInterface.h> #import <TencentOpenAPI/TencentOAuth.h> #import "WXApi.h" #import "WeiboSDK.h"
接著只要在下面的這個方法里加入這段代碼就可以了
將下面的這段代碼放到觸發點擊事件的那個地方就可以。
//1、創建分享參數 NSArray* imageArray = @[[UIImage imageNamed:@"分享時的圖片"]]; //(注意:圖片必須要在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:@"分享的網址"] title:@"分享的標題" type:SSDKContentTypeAuto]; //2、分享(可以彈出我們的分享菜單和編輯界面) //要顯示菜單的視圖, iPad版中此參數作為彈出菜單的參照視圖,只有傳這個才可以彈出我們的分享菜單,可以傳分享的按鈕對象或者自己創建小的view 對象,iPhone可以傳nil不會影響 [ShareSDK showShareActionSheet: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; } }]; }
5.設置調用QQ微信和微博客戶端
如圖:
設置微信:微信的AppID前面要加上wx
設置QQ:
在URL Types中添加QQ的AppID,其格式為:”QQ” + AppId的16進制(如果appId轉換的16進制數不夠8位則在前面補0,如轉換的是:5FB8B52,則最終填入為:QQ05FB8B52 注意:轉換后的字母要大寫) 轉換16進制的方法:echo 'ibase=10;obase=16;801312852'|bc,其中801312852為QQ的AppID。比如下圖:
設置新浪微博:
還需要這樣
這樣基本上就可以了。
重點來了,如果這樣還是不能分享的話可能是因為你沒有把QQ和微信加入白名單
在項目的plist文件中添加如下內容(白名單):
<key>LSApplicationQueriesSchemes</key> <array> <string>wechat</string> <string>weixin</string> <string>mqzoneopensdk</string> <string>mqzoneopensdkapi</string> <string>mqzoneopensdkapi19</string> <string>mqzoneopensdkapiV2</string> <string>mqqOpensdkSSoLogin</string> <string>mqqopensdkapiV2</string> <string>mqqopensdkapiV3</string> <string>wtloginmqq2</string> <string>mqqapi</string> <string>mqqwpa</string> <string>mqzone</string> <string>mqq</string> <string>sinaweibo</string> <string>sinaweibohd</string> <string>sinaweibosso</string> <string>sinaweibohdsso</string> <string>weibosdk</string> <string>weibosdk2.5</string> <string>TencentWeibo</string> <string>tencentweiboSdkv2</string> </array>
如果你的項目是一個新項目還沒寫網絡請求的話那還有一段也要加上
<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict>
這樣的話基本上應該就沒有什么問題了,QQ和微信必須用帶有QQ和微信的真機才能出來,所以模擬器是出不來QQ和微信的。
等你的應用上線的時候一定要把你各個平臺的信息統一一下,防止出錯。
剩下的就是等你的應用審核通過之后把各個平臺的在看一下,有的還需要審核。
還有就是ShareSDK默認顯示是英語,還需要在本地化一個漢語,
如圖:
文章列表