美文网首页
iOS开发第三方库友盟的分享功能

iOS开发第三方库友盟的分享功能

作者: cocoaCoffee | 来源:发表于2019-03-06 15:59 被阅读0次

详细官方文档: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 × -
QQ空间 × -
支付宝 × -
钉钉 × × × -
点点虫 × -
易信 × -
豆瓣 × × × -
人人 × × × -
腾讯微博 × × × -
有道云笔记 × × × 文件
印象笔记 文件
有道云笔记 -
Linkedin(领英) 图片链接必须为网络链接,不支持本地图片
Facebook -
FaceBookMessenger × -
Twitter -
Instagram × × × × × -
Kakao × × × -
Line × × × -
Tumblr × × × × × -
Pinterest × × × × × 图片必须为网络链接
WhatsApp × × × × -
Flickr × × × × × -
Google+ × -
Pocket × × 图片为网络链接
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

相关文章

网友评论

      本文标题:iOS开发第三方库友盟的分享功能

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