MobShareSDK提供微信、微博、QQ及Facebook等部分海外平台分享功能。
游戏需自行申请mob参数及需要接入的分享平台的参数
从官网资源下载处下载MobShareSDK模块资源并导入工程中,然后添加系统依赖库
"libz.tbd",
"libc++.tbd",
"libsqlite3.tbd",
接口调用:
// 个别平台分享参数安卓可能比iOS多,如追求与安卓相同可以多传,但是多传的参数iOS无效
NSString *videoUrl = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"mp4"];
[SuperSDK invoke:@"mobsharesdk"
funcName:@"mobShare"
parameters:@{
@"title" : @"分享的标题", // 必传
@"content" : @"分享的内容", // 必传
@"url" : @"http://www.supersdk.cn", //URL字符串,可以包含中文,不可进行URL编码,没有可以不传
@"videoUrl":videoUrl,//视频地址(支付平台:Facebook、Twitter)
@"images" : [@"http://www.mob.com/images/logo_black.png"], //图片集合,传入参数可以为单张图片信息,也可以为一个NSArray,数组元素可以为UIImage、NSString(图片路径)、NSURL(图片路径)。如: @"http://www.mob.com/images/logo_black.png" 或 @[@"http://www.mob.com/images/logo_black.png"],没有可以不传
@"platform" : @"1" /*该字段选传,不传会拉起ShareSDK默认分享UI,
传了则不会拉起UI,直接调用对应平台分享接口:
新浪微博 1,
微信好友 2,
微信朋友圈 3,
微信收藏 4,
QQ好友 5,
QQ空间 6,
Facebook 7,
Instagram 8,
KakaoTalk 9,
KakaoStory 10,
Line 11,
Twitter 12,
VKontakte 13,
*/
}];
接口回调:
- (void)handlerCallback:(NSString *)moduleName
funcName:(NSString *)funcName
parameters:(NSString *)parameters {
NSLog(@"****** 收到回调\n moduleName : %@,\n funcName : %@,\n parameters : %@", moduleName, funcName, parameters);
NSDictionary *retParam = nil;
if (parameters) {
NSData *jsonData = [parameters dataUsingEncoding:NSUTF8StringEncoding];
if (jsonData) {
retParam = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableLeaves error:nil];
}
}
int code = [[retParam objectForKey:@"code"] intValue];
NSString *desc = [retParam objectForKey:@"msg"];
id data = [retParam objectForKey:@"data"];
if ([moduleName isEqualToString:@"mobsharesdk"]) {// MobShareSDK模块回调
if ([funcName isEqualToString:@"mobShare"]) {// 分享接口回调
if(code == BCORE_SUCCESS) {
NSLog(@"分享成功");
}
else {
NSLog(@"分享失败");
}
}
}
}
回调日志打印:
收到回调
moduleName : mobsharesdk,
funcName : mobShare,
result : {
"msg" : "分享成功",
"code" : 1
}
KaKaoTalk分享参数需要在Kakao后台配置,调用mobShare接口时需要传的参数也不一样
NSDictionary *parameters = @{
@"platform" : @"9", // 必传,KaKaoTalk不能通过带ShareSDK默认UI的形式分享
@"url" : @"http://www.supersdk.cn", // 链接地址,为本地地址时默认分享文件形式,网络链接默认分享链接形式,没有可以不传
@"templateid" : @"11820", // 模板id,需要Kakao后台配置,必传
@"templateargs" : @{}, // 模板参数,没有可以不传
};
[SuperSDK invoke:@"mobsharesdk" funcName:@"mobShare" parameters:parameters];
1、国内(除微博以外)必须安装对应的客户端,海外(除Facebook以外)必须安装客户端。
2、在iOS13之后,国内分享必须配置Assoicsatd Domains,在分享参数申请时,需要添加Univeral link。如需帮助飞书找@尹祥
3、微信分享没有给回调,不能依赖SDK给的code判定成功或者失败的依据。
4、Twitter分享同一条内容只能分享一次。
5、视频分享不宜过大,可能由于网络波动,分享可能会出现失败或者没有回调。
Q:Error Domain=com.facebook.Facebook.platform Code=102 “The operation couldn’t be completed. (com.facebook.Facebook.platform error 102.)” UserInfo=0x14dd1a10 {error_message=Failed to authenticate the application because of app name mismatch. Please check the application name configured by the dialog., app_id=000000, error_code=102}
A: FacebookDisPlayName 和 Facebook 后台名称不统一。
Q:twitter 授权一直处于加载转圈的状态
A: 检查Twitter的回调地址,如果后台有多个,Twitter默认拿第一个去验证回调。
Q:qq分享:{code: -1 msg: 分享失败:Error Domain=ShareSDKErrorDomain Code=200103 “(null)” UserInfo={error_code=200103, description=未配置urlScheme:(null)}
A:把appid转十六进制,在加前缀QQ