美文网首页
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