Swift-友盟分享登录集成

之前写了OC版的友盟分享,现在来份Swift的(注:Siwft的是有坑的)

pod导入
    pod 'UMCCommon'                                      #友盟基础库
    pod 'UMCSecurityPlugins'                             #友盟安全组件
    pod 'UMCShare/UI'                                    #UI模块(分享面板,建议添加)
    pod 'UMCShare/Social/ReducedWeChat'                  #集成微信(精简版0.2M)
    pod 'UMCShare/Social/ReducedQQ'                      #集成QQ/QZone/TIM(精简版0.5M)
桥接文件(注:现在注册友盟改变了)
#import <UMCommon/UMCommon.h> // 导入这个是重点 不然没法注册
#import <UMShare/UMShare.h>
#import <UShareUI/UShareUI.h>

其他准备条件与OC版一样的
那我们就直接开始吧,这里直接对AppDelegate进行扩展

let UMAppkey = "友盟Appkey"
/// 微信appkey
let WeChatAppkey = "微信Appkey"
let WeChatAppSecret = "微信Appkey"
/// QQappkey
let QQAppkey = "QQAppID"
let QQAppSecret = "QQAppkey"
extension AppDelegate {
    func setUpUM(){
        UMSocialManager.default().openLog(true)
        UMConfigure.initWithAppkey(UMAppkey, channel: "App Store")
        if !WeChatAppkey.isEmpty {
            UMSocialManager.default().setPlaform(UMSocialPlatformType.wechatSession, appKey: WeChatAppkey, appSecret: WeChatAppSecret, redirectURL: nil)
        }
        if !QQAppkey.isEmpty {
            UMSocialManager.default().setPlaform(UMSocialPlatformType.QQ, appKey: QQAppkey, appSecret: QQAppSecret, redirectURL: nil)
        }
    }
}

回调方法是一样的这里就不写了
直接开始分享内容吧,还是一样的创建一个分享模型

class HWShareItem : NSObject {
    /// 分享URL
    var url:String?
    /// 分享标题
    var title:String?
    /// 分享内容
    var content:String?
    /// 分享图片 (与分享图URL二选一)
    var icon:UIImage?
    /// 分享图片URL(字符串)
    var iconUrlString:String?
    /// 分享模型构造方法 title:分享标题 content:分享内容 url:分享URL icon:分享图片 iconUrlString:分享图片URL(字符串)
    convenience init(title:String,content:String,url:String,icon:UIImage? ,iconUrlString:String?){
        self.init()
        self.title = title
        self.content = content
        self.url = url
        self.icon = icon
        self.iconUrlString = iconUrlString
    }
}

分享管理者Swift-Kingfisher图片下载封装

这里需要注意array.addObjects(from: [UMSocialPlatformType.wechatSession , UMSocialPlatformType.wechatTimeLine])通过这样去添加你会发现你的分享面板啥都没有,之前开始弄的时候我也郁闷了一天,后面改成了对应的角标了,问题解决 也可以通过UMSocialPlatformType.init(rawValue: 1)这样来添加

class HWShare: NSObject {
    private  static let instance: HWShare = HWShare()
    class func sharedShareManage() -> HWShare {
        return instance
    }
    
    func showShareUI(item:HWShareItem,_ action:((Bool)->())? = nil) {
        let array = NSMutableArray.init()
        if !WeChatAppkey.isEmpty {
            array.addObjects(from: [UMSocialPlatformType.wechatSession.rawValue , UMSocialPlatformType.wechatTimeLine.rawValue])
        }
        if !QQAppkey.isEmpty {
            array.addObjects(from: [UMSocialPlatformType.QQ.rawValue, UMSocialPlatformType.qzone.rawValue])
        }
        UMSocialUIManager.setPreDefinePlatforms(array as! [NSInteger])
        UMSocialUIManager.showShareMenuViewInWindow { (platformType, userInfo) in
            self.shareWebPageToPlatformType(platformType, item, action)
        }
    }
    /// 分享
    func shareWebPageToPlatformType(_ platformType:UMSocialPlatformType,_ item:HWShareItem, _ action:((Bool)->())? = nil){
        //创建分享消息对象
        let messageObject = UMSocialMessageObject.init()
        var thumImage:UIImage = hw_Image(named: "分享图标")
        if item.icon != nil {
            thumImage = item.icon ?? hw_Image(named: "分享图标")
        } else if (item.iconUrlString?.count ?? 0) > 0 {
            let imageView = UIImageView.init()
            imageView.hw_setImage(item.iconUrlString, nil)
            thumImage = imageView.image ?? hw_Image(named: "分享图标")
        }
        //创建网页内容对象
        let shareObject = UMShareWebpageObject.shareObject(withTitle: item.title ?? "分享标题", descr: item.content ?? "分享内容", thumImage: thumImage)
        //设置网页地址
        shareObject?.webpageUrl = item.url
        //分享消息对象设置分享内容对象
        messageObject.shareObject = shareObject
        //调用分享接口
        UMSocialManager.default().share(to: platformType, messageObject: messageObject, currentViewController: UIApplication.shared.keyWindow?.rootViewController) { (data, error) in
            if ((error) != nil) {
                action?(false)
            }else{
                action?(true)
            }
        }
    }

使用: item本地图片和图片URL二选一就好(最好用本地图片,因为网络图片下载需要时间)

// 创建分享模型
let item = HWShareItem.init(title:  "你的标题", content: "来自环球渔网分享", url: "你的URL", icon: UIImage(), iconUrlString: nil)
// 调用分享面板
HWShare.shared().showShareUI(item: item) { (tag) in
     print("\(tag == true ? "分享成功" : "分享失败")")
}

下面是登录

@IBAction func otherLoginButton(_ btn: UIButton) {
        if btn == qqButton {
            HWPrint("qq登录")
            UMSocialManager.default().getUserInfo(with: UMSocialPlatformType.QQ, currentViewController: nil) { [weak self] (result, error) in
                if error == nil {
                    let resp = result as! UMSocialUserInfoResponse
                    HWPrint(resp.uid)
                    获取uid处理你的登录逻辑
                } else { // 授权失败
                    HWPrint(error)
                }
            }
        } else {
            HWPrint("微信登录")
            UMSocialManager.default().getUserInfo(with: UMSocialPlatformType.wechatSession, currentViewController: nil) { [weak self] (result, error) in
                if error == nil {
                    let resp = result as! UMSocialUserInfoResponse
                    HWPrint(resp.uid)
                    获取uid处理你的登录逻辑
                } else { // 授权失败
                    HWPrint(error)
                }
            }
        }
    }

其他

        /// 判断设备是否安装微信
        if UIApplication.shared.canOpenURL(URL(string: "weixin://")!) == false {
            HWHUDManage.sharedHUD.hw_showtitleHUD(name: "设备未安装微信")
            return
        }
        /// 判断设备是否按QQ
        if UIApplication.shared.canOpenURL(URL(string: "mqq://")!) == false {
            HWHUDManage.sharedHUD.hw_showtitleHUD(name: "设备未安装QQ")
            return
        }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,992评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,212评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,535评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,197评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,310评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,383评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,409评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,191评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,621评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,910评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,084评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,763评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,403评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,083评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,318评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,946评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,967评论 2 351

推荐阅读更多精彩内容

  • 我是谁? 我也不知道。我想我现在还在寻找答案。 以前还没有思考过这个问题。那我是谁呢?我就是这个名字,这个职业,这...
    laBonita阅读 282评论 2 3
  • 今日书目《爱的教育》,作者(意)亚米契斯,阅读第21页至51页,共252页,读书笔记: 01小石匠来访 我们先来看...
    caojuhua6612阅读 232评论 1 1
  • 港片一直在走下坡路! 无论是电影还是电视剧,近年好的电影大概就是《一念无明》,而相对好的电视剧就是前几年的《使徒行...
    电影熊猫阅读 551评论 1 1
  • 浣溪沙。伤春 算是荼蘼辞谢时,鹧鸪啼处草葳蕤。黄梅雨下冷香枝。 可恨春光留不住,便教花信别来依。空将清泪浥愁诗
    喻芷楚阅读 544评论 6 13