美文网首页
iOS ShareSDK集成与分享实践

iOS ShareSDK集成与分享实践

作者: Claire_wu | 来源:发表于2018-01-09 15:41 被阅读2455次

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

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

    1.1账号申请

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

    image.png

    1.2 添加应用

    • 1 进入后台


      image.png
    • 2 添加应用


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


      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 两个字段


    image.png

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

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


    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"诸如此类


    image.png

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

    *1 在AppDelegate里导入头文件

    #import <ShareSDK/ShareSDK.h>
    #import <ShareSDKConnector/ShareSDKConnector.h>
    
    //腾讯开放平台(对应QQ和QQ空间)SDK头文件
    #import <TencentOpenAPI/TencentOAuth.h>
    #import <TencentOpenAPI/QQApiInterface.h>
    
    • 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集成与分享实践

          本文链接:https://www.haomeiwen.com/subject/drawnxtx.html