Light's Blog

The best or nothing.

ShareSDK接入

| Comments

iOS接入ShareSDK实现第三方分享

因为友盟被阿里收购在Android平台的各种令人不悦的后台操作,改用ShareSDK实现第三方分享。以下为简单接入流程。详情可参考官方文档http://wiki.mob.com/ios%E7%AE%80%E6%B4%81%E7%89%88%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90/

获取AppKey

在官网注册,并按要求创建应用,获取AppKey,比如为182947e7afac0

下载所需版本的ShareSDK

解压后,将ShareSDK导入工程中,记得勾选Copy items into destination group’s folder(if needed)

添加依赖库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//   ShareSDK
libicucore.dylib
libz.dylib
libstdc++.dylib
JavaScriptCore.framework

//    新浪微博SDK
ImageIO.framework
libsqlite3.dylib

//    QQ空间SDK
libsqlite3.dylib

//    微信SDK
libsqlite3.dylib

//    根据需要添加

初始化对应的第三方平台

AppDelegate.m中,导入所需头文件。

1
2
3
4
5
6
7
8
9
10
11
12
13
#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"

application:didFinishLaunchingWithOptions:方法中初始化。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
- (BOOL)application:(UIApplication *)application
    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

  /**
   *  设置ShareSDK的appKey,如果尚未在ShareSDK官网注册过App,请移步到http://mob.com/login
   * 登录后台进行应用注册
   *  在将生成的AppKey传入到此方法中。
   *  方法中的第二个第三个参数为需要连接社交平台SDK时触发,
   *  在此事件中写入连接代码。第四个参数则为配置本地社交平台时触发,根据返回的平台类型来配置平台信息。
   *  如果您使用的时服务端托管平台信息时,第二、四项参数可以传入nil,第三项参数则根据服务端托管平台来决定要连接的社交SDK。
   */
  [ShareSDK registerApp:@"182947e7afac0"

      activePlatforms:@[
        @(SSDKPlatformTypeSinaWeibo),
        @(SSDKPlatformTypeWechat),
        @(SSDKPlatformTypeQQ),
      ]
      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;
        default:
          break;
        }
      }
      onConfiguration:^(SSDKPlatformType platformType,
                        NSMutableDictionary *appInfo) {

        switch (platformType) {
        case SSDKPlatformTypeSinaWeibo:
          //设置新浪微博应用信息,其中authType设置为使用SSO+Web形式授权
          [appInfo
              SSDKSetupSinaWeiboByAppKey:@"3144028685"
                               appSecret:@"11abfe456bc8eefbab49fe7bbcd90bf0"
                             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;
        default:
          break;
        }
      }];
  return YES;
}

接入不同的平台均需要注册并获取AppKeyAppSecret值。

添加分享实现代码

ViewController.m中触发分享的方法中,添加分享代码。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
- (void)shareAction {
  [self.tf endEditing:YES];
  // 1、创建分享参数
  NSArray *imageArray = @[ [UIImage imageNamed:@"junxi5.jpg"] ];
  if (imageArray) {

    NSMutableDictionary *shareParams = [NSMutableDictionary dictionary];
    [shareParams SSDKSetupShareParamsByText:self.tf.text
                                     images:imageArray
                                        url:nil
                                      title:@"Ticwatch Sport"
                                       type:SSDKContentTypeAuto];
    // 2、分享(可以弹出我们的分享菜单和编辑界面)
    [ShareSDK showShareActionSheet:nil
                             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(@"分享失败");
                   NSLog(@"%@", error);
                   break;
                 }
                 default:
                   break;
                 }
               }];
  }
}

添加URL Schemes

urlscheme

适配iOS 9问题

退回http协议,并设置域

http

添加scheme白名单

白名单

分享平台title为英文问题

默认语言为英文,需要在项目中添加中文本地化。

localization

如需修改标题可以修改对应的本地化文件。

customLocalization

Github源码

ShareSDKDemo

Comments