乐趣区

关于前端:ShareSDK分享失败的原因

对于分享预计很多都用的是 ShareSDK 的社会化分享,简略不便,反对的品种很多,然而个别的话都还是 QQ,微信,新浪微博,腾讯微博为主。

最近须要导入一个分享的模块,失败了几次之后最终胜利,分享给大家,让大家少走一些弯路,让大家更快的搞定 IOS 分享的问题。

步骤如下:

先下载 ShareSDK。

导入我的项目

导入所须要的一些库文件

去各个开放平台注册本人的 APPKey,创立本人的利用。

最初到我的项目里配置各个平台的 AppKey 等等。

进入注释:

1. 注册 ShareSDK 的账号,而后创立本人的利用 (要用到 APPKey),下载 ShareSDK:http://sharesdk.mob.com/#/sha…,而后解压,导入本人的我的项目里,接着就是依照官网上的增加额定的依赖库,剩下的就是怎么把分享性能实现。

2. 注册各个平台的 AppKey

首先要注册账号,再接着创立利用,找到对应的 AppKey 即可。上面是比拟罕用的三个平台的链接。

3. 在代码里注册 ShareSDK 还有各个平台。

首先要导入头文件

#import 

#import 

#import 

#import 

#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 

#import 

#import 

#import 

#import "WXApi.h"

#import "WeiboSDK.h"

接着只有在上面的这个办法里退出这段代码就能够了

将上面的这段代码放到触发点击事件的那个中央就能够。

//1、创立分享参数

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];

//2、分享 (能够弹出咱们的分享菜单和编辑界面)

// 要显示菜单的视图, 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

设置 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。比方下图:

设置新浪微博:

还须要这样

这样基本上就能够了。

重点来了,如果这样还是不能分享的话可能是因为你没有把 QQ 和微信退出白名单

在我的项目的 plist 文件中增加如下内容 (白名单):

LSApplicationQueriesSchemes

wechat

weixin

mqzoneopensdk

mqzoneopensdkapi

mqzoneopensdkapi19

mqzoneopensdkapiV2

mqqOpensdkSSoLogin

mqqopensdkapiV2

mqqopensdkapiV3

wtloginmqq2

mqqapi

mqqwpa

mqzone

mqq

sinaweibo

sinaweibohd

sinaweibosso

sinaweibohdsso

weibosdk

weibosdk2.5

TencentWeibo

tencentweiboSdkv2

如果你的我的项目是一个新我的项目还没写网络申请的话那还有一段也要加上

NSAppTransportSecurity

NSAllowsArbitraryLoads

这样的话基本上应该就没有什么问题了,QQ 和微信必须用带有 QQ 和微信的真机能力进去,所以模拟器是出不来 QQ 和微信的。

等你的利用上线的时候肯定要把你各个平台的信息对立一下,避免出错。

剩下的就是等你的利用审核通过之后把各个平台的在看一下,有的还须要审核。

还有就是 ShareSDK 默认显示是英语,还须要在本地化一个汉语,

退出移动版