两种实现方法
1.集成新浪SDK实现如果你的app需要支持新浪微博登录等其他功能,建议使用方法1
2.使用ios系统原生的分享方式,比较简单,但是需要在iphone设置里添加账号密码,有时候不好添加
第一种 方式:
前提:在新浪微博开放平台,注册app获取到appid和serect
注册的时候授权回调页: ios最好填写默认的https://api.weibo.com/oauth2/default.html
1.进入官网链接到github下载SDK
2.打开SDK文档参考
3.libWebSDK整个文件拖入到工程中
4.Other-Linker-flags 里边设置-Objc
5.添加需要支持的库
QuartzCore.framework ImageIO.framework SystemConfiguration.framework
Security.framework CoreTelephony.framework CoreText.framework CoreGraphics.framework libz.dylib libsqlite3.dylib
6.在info里边配置白名单 还有http设置 ATS 为yes
7.配置urlScheme 填写wb+”appKey”
8.设置桥接文件 导入头文件
#import "WeiboSDK.h"
9.上代码了
一般分享最多3个 类型 文本 图片 链接
大概的步骤如下: 但是具体的判断大家自己做一下
在app代理里边
注册
WeiboSDK.registerApp(appkey)
设置weibo代理
func application(_ application: UIApplication, handleOpen url: URL) -> Bool {
return WeiboSDK.handleOpen(url, delegate: self)
}
遵守代理协议
class AppDelegate: UIResponder, UIApplicationDelegate, WeiboSDKDelegate { }
实现代理方法
func didReceiveWeiboRequest(_ request: WBBaseRequest!) { }
func didReceiveWeiboResponse(_ response: WBBaseResponse!) { }
封装一个类专门来写分享的代码
//判断是否安装 没有安装就提醒安装
WeiboSDK.isWeiboAppInstalled()
//整个消息类
letmsg =WBMessageObject()
//文本类型
msg.text=""
//图片类型
letimg =WBImageObject()
//大小不能超过10M
img.imageData=UIImageJPEGRepresentation(UIImage(named:"QQ")!,1)
//网页
letweb =WBWebpageObject()
//不能为空且长度不能超过255
web.webpageUrl=""
//不能为空长度小于255,可与url一样,只要是唯一就可以了
web.objectID=""
web.description=""
web.title=""
//大小小于32k
web.thumbnailData=UIImageJPEGRepresentation(UIImage(named:"QQ")!,1)
msg.imageObject= img
msg.mediaObject= web
//请求类
if let req =WBSendMessageToWeiboRequest.request(withMessage: msg)as?WBSendMessageToWeiboRequest{
//发送请求
WeiboSDK.send(req)
}
第二种 方式:
//判断是否安装了新浪并绑定了账号密码
if !SLComposeViewController.isAvailable(forServiceType: SLServiceTypeSinaWeibo) { return }
//创建控制器
guard let wbshare = SLComposeViewController(forServiceType: SLServiceTypeSinaWeibo) else { return }
//正文不可以大于120字
var txt = text
if txt.count > 115 {
let endIdx = text.endIndex
let inx = text.index(endIdx, offsetBy:115 - text.count)
txt = text.substring(to: inx) + "..."
}
//设置正文
wbshare.setInitialText(txt)
//设置图片
wbshare.add(img)
//设置url
if let url = URL(string: urlStr) {
wbshare.add(url)
}
//moda分享
present(wbshare, animated: true, completion: nil)
//监听结果
wbshare.completionHandler = { result in
if result == .cancelled {
print("取消分享")
}else if result == .done {
print("分享成功")
}
}