iOS ShareSDK集成与分享实践

shareSDK是一个很成熟的第三方分享平台,提供了非常方便的接口。虽然官方给出了集成文档,但是实践过程中仍会踩到一些坑,现在将整个集成及分享的实践过程记录下来以作备忘。

1 前往ShareSDK官网添加应用,获取Appkey

1.1账号申请

传送门:ShareSDK官网
首先需要在官网申请账号,目前账号申请较为严格需要验证身份,账号信息填写时除公司名称可以先随意填写,其他信息需按真实情况填写

iOS ShareSDK集成与分享实践_第1张图片
image.png

1.2 添加应用

  • 1 进入后台


    image.png
  • 2 添加应用


    image.png
  • 3 获取所添加应用的appkey
    点击左上角下拉箭头找到你添加的应用-点击概况-保存右边概况里面显示的Appkey


    iOS ShareSDK集成与分享实践_第2张图片
    image.png

2 在腾讯开放平台上添加应用,获取APP key

传送门:腾讯开放平台
貌似这两天才申请的,今天重新点进去此网站,申请流程又有一些改变且增加了提交审核流程,具体申请还是请读者参看最新的网站要求和指引。

3 快速集成

3.1 集成SDK

iOS集成方法有以下两种:

  • 直接下载SDK然后拖到工程里
  • CocoaPods集成
    楼主直接选择了CocoaPods集成,关于以上两种集成方式有官方文档参考应该足矣(传送门:iOS 快速集成)

3.2 在info.plist里设置ShareSDK的Appkey

设置ShareSDK的Appkey并初始化对应的第三方社交平台
在项目工程的Info.plist 中如图增加 MOBAppKey 和 MOBAppSecret 两个字段


iOS ShareSDK集成与分享实践_第3张图片
image.png

3.3 在URLTypes里增加跳转到QQ的schemes

坑点一:注意这里的URL schemes填写规范:以QQ为首,后面为申请的Appkey转换为十六进制


iOS ShareSDK集成与分享实践_第4张图片
image.png

3.4 在info.plist里增加LSApplicationQueriesSchemes

坑点二:在iOS 9下涉及到平台客户端跳转,系统会自动到项目info.plist下检测是否设置平台Scheme。对于需要配置的平台,如果没有配置,就无法正常跳转平台客户端。因此要支持客户端的分享和授权等,需要配置Scheme名单。
不配置的话就会报错-canOpenURL: failed for URL: "mqq://" - error: "This app is not allowed to query for scheme mqq"诸如此类


iOS ShareSDK集成与分享实践_第5张图片
image.png

3.5 初始化SDK并且初始化第三方平台

*1 在AppDelegate里导入头文件

#import 
#import 

//腾讯开放平台(对应QQ和QQ空间)SDK头文件
#import 
#import 
  • 2 在- (BOOL)application: didFinishLaunchingWithOptions:方法中调用registerActivePlatforms方法来初始化SDK并且初始化第三方平台
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    
    //网络监听
    [self monitorNetworkStatus];
    [self initShareService];
    return YES;
}

-(void)initShareService {
    /**初始化ShareSDK应用
     @param activePlatforms
     使用的分享平台集合
     @param importHandler (onImport)
     导入回调处理,当某个平台的功能需要依赖原平台提供的SDK支持时,需要在此方法中对原平台SDK进行导入操作
     @param configurationHandler (onConfiguration)
     配置回调处理,在此方法中根据设置的platformType来填充应用配置信息
     */
    [ShareSDK registerActivePlatforms:@[
//                                        @(SSDKPlatformTypeWechat),
                                        @(SSDKPlatformTypeQQ),
                                        ]
                             onImport:^(SSDKPlatformType platformType)
     {
         switch (platformType)
         {
//             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 SSDKPlatformTypeWechat:
//                 [appInfo SSDKSetupWeChatByAppId:@"wx0694c8eb91cc23cc"
//                                       appSecret:@"17411e8428e85ffd29b5b716b33b670b"];
//                 break;
             case SSDKPlatformTypeQQ:
                 [appInfo SSDKSetupQQByAppId:@"101455078"
                                      appKey:@"8c6b0c6cbff68e098aa5e7e204ce4d7f"
                                    authType:SSDKAuthTypeBoth];
                 break;
             default:
                 break;
         }
     }];
}

3.6 调用分享

到了最后一步了,在需要调用分享的地方调用share:parameters:onStateChanged:即可,坑点三:注意所传图片不要太大,否则因为上传时间太久导致分享不成功

//分享到其他客户端
- (void)shareWithPlatformType:(SSDKPlatformType)platformType {
    
    //创建分享参数
    NSMutableDictionary *shareParams = [NSMutableDictionary dictionary];
    [shareParams SSDKSetupShareParamsByText:@"快来下载Fi-Link吧"
                                         images:@[IMAGE_NAMED(@"icon_small_40")] //传入要分享的图片
                                        url:[NSURL URLWithString:@"https://www/baidu.com"]
                                          title:@"Fi-Link"
                                           type:SSDKContentTypeAuto];

    [ShareSDK share:platformType parameters:shareParams onStateChanged:^(SSDKResponseState state, NSDictionary *userData, SSDKContentEntity *contentEntity, NSError *error) {
        if (state == SSDKResponseStateSuccess) {
            [self showActivityWithSuccessMsg:@"分享成功"];
        } else if (state == SSDKResponseStateFail) {
            [self showActivityWithErrorMsg:@"分享失败"];
        }
    }];
}

你可能感兴趣的:(iOS ShareSDK集成与分享实践)