详细官方文档:U-share API说明
反正我是看不下去了直接做的
这里我只讲微信,朋友圈,QQ,微博的分享
导库
#友盟
#友盟
pod 'UMCCommon'
pod 'UMCShare/UI'
pod 'UMCShare/Social/ReducedWeChat'
pod 'UMCShare/Social/QQ'
pod 'UMCShare/Social/Sina'
其中
如果是个人测试的话,(微信、朋友圈),QQ,微博分享都需要去注册AppID和AppKey或是AppSecret。
另外微信的AppKey是以小写字母wx开头,后面接一串数字字母。QQ AppID和微博AppKey好像是数字组成的。
因为我是直接拿公司给的,我的就是这样,具体我也不清楚
友盟也需要申请个AppKey,去友盟官网申请,具体百度
-
以上这些AppID和 AppKey或是AppSecret都一定要有,如果在公司那肯定会给你
一、在AppDelegate.m配置
- 导入头文件
#import <UMShare/UMShare.h>
#import <UMCommon/UMCommon.h>
- 在didFinishLaunchingWithOptions方法
/** 初始化友盟所有组件产品
@param appKey 开发者在友盟官网申请的appkey.
@param channel 渠道标识,可设置nil表示"App Store".
*/
[UMConfigure initWithAppkey:appkey channel:nil];
/**
* 设置平台的appkey
*
* @param platformType 平台类型 @see UMSocialPlatformType
* @param appKey 第三方平台的appKey(QQ平台为appID)
* @param appSecret 第三方平台的appSecret(QQ平台为appKey)
* @param redirectURL redirectURL
*/
//微信聊天
[[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_WechatSession appKey:appKey appSecret:appSecret redirectURL:nil];
//QQ
[[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_QQ appKey:appID appSecret:appKey redirectURL:nil];
//新浪
[[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_Sina appKey:appID appSecret:appSecret redirectURL:nil];
//朋友圈
[[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_WechatTimeLine appKey:appKey appSecret:appSecret redirectURL:nil];
其中appKey,appID,appSecret那三个就是你到各平台注册的返回字符串,我这就不填上去了
各平台类型枚举如下:
UMSocialPlatformType_UnKnown = -2,
//预定义的平台
UMSocialPlatformType_Predefine_Begin = -1,
UMSocialPlatformType_Sina = 0, //新浪
UMSocialPlatformType_WechatSession = 1, //微信聊天
UMSocialPlatformType_WechatTimeLine = 2,//微信朋友圈
UMSocialPlatformType_WechatFavorite = 3,//微信收藏
UMSocialPlatformType_QQ = 4,//QQ聊天页面
UMSocialPlatformType_Qzone = 5,//qq空间
UMSocialPlatformType_TencentWb = 6,//腾讯微博
UMSocialPlatformType_AlipaySession = 7,//支付宝聊天页面
UMSocialPlatformType_YixinSession = 8,//易信聊天页面
UMSocialPlatformType_YixinTimeLine = 9,//易信朋友圈
UMSocialPlatformType_YixinFavorite = 10,//易信收藏
UMSocialPlatformType_LaiWangSession = 11,//点点虫(原来往)聊天页面
UMSocialPlatformType_LaiWangTimeLine = 12,//点点虫动态
UMSocialPlatformType_Sms = 13,//短信
UMSocialPlatformType_Email = 14,//邮件
UMSocialPlatformType_Renren = 15,//人人
UMSocialPlatformType_Facebook = 16,//Facebook
UMSocialPlatformType_Twitter = 17,//Twitter
UMSocialPlatformType_Douban = 18,//豆瓣
UMSocialPlatformType_KakaoTalk = 19,//KakaoTalk
UMSocialPlatformType_Pinterest = 20,//Pinteres
UMSocialPlatformType_Line = 21,//Line
UMSocialPlatformType_Linkedin = 22,//领英
UMSocialPlatformType_Flickr = 23,//Flickr
UMSocialPlatformType_Tumblr = 24,//Tumblr
UMSocialPlatformType_Instagram = 25,//Instagram
UMSocialPlatformType_Whatsapp = 26,//Whatsapp
UMSocialPlatformType_DingDing = 27,//钉钉
UMSocialPlatformType_YouDaoNote = 28,//有道云笔记
UMSocialPlatformType_EverNote = 29,//印象笔记
UMSocialPlatformType_GooglePlus = 30,//Google+
UMSocialPlatformType_Pocket = 31,//Pocket
UMSocialPlatformType_DropBox = 32,//dropbox
UMSocialPlatformType_VKontakte = 33,//vkontakte
UMSocialPlatformType_FaceBookMessenger = 34,//FaceBookMessenger
UMSocialPlatformType_Tim = 35,// Tencent TIM
UMSocialPlatformType_Predefine_end = 999,
//用户自定义的平台
UMSocialPlatformType_UserDefine_Begin = 1000,
UMSocialPlatformType_UserDefine_End = 2000,
二、以上设置完了就到URL Types配置了
image.png这里配置错误或没配置的话分享会报一个2007的错误。URL Schemes填的是appKey(QQ平台为appID)
注意:由于QQ的appID和新浪微博的appKey只是数字,URL Schemes这里还要加上他们的前缀,QQ的是tencent,新博的是wb
还有配置和删除URL Types的元素可以去info.plist文件弄
配置完以上两点就可以去写代码了
第三方平台支持的分享类型总览
平台 | 文本 | 图片 | 图文 | Web链接 | 视频链接 | 音乐链接 | 其他 |
---|---|---|---|---|---|---|---|
微信好友 | √ | √ | × | √ | √ | √ | 微信小程序、gif表情及文件 |
微信朋友圈 | √ | √ | × | √ | √ | √ | - |
微信收藏 | √ | √ | × | √ | √ | √ | 文件 |
新浪微博 | √ | √ | √ | √ | √ | √ | - |
√ | √ | × | √ | √ | √ | - | |
QQ空间 | √ | √ | × | √ | √ | √ | - |
支付宝 | √ | √ | × | √ | √ | √ | - |
钉钉 | √ | √ | × | √ | × | × | - |
点点虫 | √ | √ | × | √ | √ | √ | - |
易信 | √ | √ | × | √ | √ | √ | - |
豆瓣 | √ | √ | √ | × | × | × | - |
人人 | √ | √ | √ | × | × | × | - |
腾讯微博 | √ | √ | √ | × | × | × | - |
有道云笔记 | √ | √ | √ | × | × | × | 文件 |
印象笔记 | √ | √ | √ | √ | √ | √ | 文件 |
有道云笔记 | √ | √ | √ | √ | √ | √ | - |
Linkedin(领英) | √ | √ | √ | √ | √ | √ | 图片链接必须为网络链接,不支持本地图片 |
√ | √ | √ | √ | √ | √ | - | |
FaceBookMessenger | × | √ | √ | √ | √ | √ | - |
√ | √ | √ | √ | √ | √ | - | |
× | √ | × | × | × | × | - | |
Kakao | √ | √ | √ | × | × | × | - |
Line | √ | √ | √ | × | × | × | - |
Tumblr | √ | × | × | × | × | × | - |
× | √ | × | × | × | × | 图片必须为网络链接 | |
√ | √ | × | × | × | × | - | |
Flickr | × | √ | × | × | × | × | - |
Google+ | √ | √ | × | √ | √ | √ | - |
× | √ | × | √ | √ | √ | 图片为网络链接 | |
VKontakte | √ | √ | × | √ | √ | √ | - |
DropBox | √ | √ | × | √ | √ | √ | 文件 |
短信 | √ | √ | √ | √ | √ | √ | - |
邮件 | √ | √ | √ | √ | √ | √ | - |
这里以图片分享为例,调用下面的shareImageToPlatformType方法,参数就是上面的分享到哪个平台的类型,可以将以下的方法封装到一个分享的类中
- (void)shareImageToPlatformType:(UMSocialPlatformType)platformType
{
//创建分享消息对象
UMSocialMessageObject *messageObject = [UMSocialMessageObject messageObject];
//创建图片内容对象
UMShareImageObject *shareObject = [[UMShareImageObject alloc] init];
//如果有缩略图,则设置缩略图,
shareObject.thumbImage = [UIImage imageNamed:@"icon"];
[shareObject setShareImage:@"https://mobile.umeng.com/images/pic/home/social/img-1.png"];
//分享消息对象设置分享内容对象
messageObject.shareObject = shareObject;
//这里可以添加添加判断设备安装了QQ或是微信没,导入头文件QQ #import <TencentOpenAPI/QQApiInterface.h> 微信 #import <WXApi.h>
if (![WXApi isWXAppInstalled]) {
return;
}
if (![QQApiInterface isQQInstalled]) {
return;
}
/**
* 设置分享平台
*
* @param platformType 平台类型 @see UMSocialPlatformType 在上面的枚举有
* @param messageObject 分享的content @see UMSocialMessageObject
* @param currentViewController 用于弹出类似邮件分享、短信分享等这样的系统页面
* @param completion 回调
* @discuss currentViewController 只正对sms,email等平台需要传入viewcontroller的平台,其他不需要的平台可以传入nil
*/
//调用分享接口
[[UMSocialManager defaultManager] shareToPlatform:platformType messageObject:messageObject currentViewController:self completion:^(id data, NSError *error) {
if (error) {
NSLog(@"************Share fail with error %@*********",error);
}else{
NSLog(@"response data is %@",data);
}
}];
}
注意:
- 图片以url的形式分享,url前缀必须是https,http不行,图片url如果是http,只能转成NSData或是UIImage的形式分享,失败报错 2014
you must using https url, for support the new strategy of AppStore
- 除微博能以数组形式分享多张图片,QQ和微信只能分享一张图片
- 新浪微博可以不用真机测试,微信,QQ都要真机,所以微信,QQ在调用分享方法时要先判断设备安装了微信或是QQ没
-
在注册微博的appKey时填写写的bundle identifier必须与工程的要一致,要不然,在微博分享时取消了返回原App会闪退还是崩溃来着,也是分享不成功的
image.png
分享成功
微信:
481551859021_.pic.jpg 491551859022_.pic.jpg
QQ:
[图片上传中...(511551859024_.pic.jpg-51c7ea-1551859110323-0)] 511551859024_.pic.jpg
朋友圈:
521551859025_.pic.jpg微博:
531551859026_.pic.jpg
网友评论