ShareSDK分享失敗的緣由



    關於分享估計不少都用的是ShareSDK的社會化分享,簡單方便,支持的種類不少,可是通常的話都仍是QQ,微信,新浪微博,騰訊微博爲主。api

 

    最近須要導入一個分享的模塊,失敗了幾回以後最終成功,分享給你們,讓你們少走一些彎路,讓你們更快的搞定IOS分享的問題。微信

 

步驟以下:網絡

 

  1. 先下載ShareSDK。app

  2. 導入項目url

  3. 導入所須要的一些庫文件spa

  4. 去各個開放平臺註冊本身的APPKey,建立本身的應用。3d

  5. 最後到項目裏配置各個平臺的AppKey等等。code

     

進入正文:orm

 

    1.註冊ShareSDK的帳號,而後建立本身的應用(要用到APPKey),下載ShareSDK:http://sharesdk.mob.com/#/sharesdk,而後解壓,導入本身的項目裏,接着就是按照官網上的添加額外的依賴庫,剩下的就是怎麼把分享功能實現。對象

 

    2.註冊各個平臺的AppKey

 

    首先要註冊帳號,再接着建立應用,找到對應的AppKey便可。下面是比較經常使用的三個平臺的連接。

 

QQ:http://open.qq.com/

微信:http://open.weixin.qq.com/

新浪微博:http://open.weibo.com/

 

    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"

    接着只要在下面的這個方法里加入這段代碼就能夠了

    將下面的這段代碼放到觸發點擊事件的那個地方就能夠。

    //一、建立分享參數
    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];
        
        //二、分享(能夠彈出咱們的分享菜單和編輯界面)
        //要顯示菜單的視圖, 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 

55BDA8FD-90BF-472B-999C-4C57680AB210.png

 

 

設置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。好比下圖:

 

9406F13D-F78B-4261-A52B-CFBC7ECF4890.png

 

80548F94-3DAE-45D5-9627-A76E9D514585.png

 

 

設置新浪微博:

 

49C4BF10-26ED-4553-9626-7110A15B8B9A.png

 

還須要這樣

 

8.png

 

這樣基本上就能夠了。

 

重點來了,若是這樣仍是不能分享的話多是由於你沒有把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默認顯示是英語,還須要在本地化一個漢語,

如圖:

 

wKioL1fOyu_Ai_s5AAM6qht1R6s708.png

相關文章
相關標籤/搜索