shareSDK是一个很成熟的第三方分享平台,提供了非常方便的接口。虽然官方给出了集成文档,但是实践过程中仍会踩到一些坑,现在将整个集成及分享的实践过程记录下来以作备忘。
1 前往ShareSDK官网添加应用,获取Appkey
1.1账号申请
传送门:ShareSDK官网
首先需要在官网申请账号,目前账号申请较为严格需要验证身份,账号信息填写时除公司名称可以先随意填写,其他信息需按真实情况填写
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:@"分享失败"];
}
}];
}
网友评论