Swift手记2——iOS接入微信SDK分享(Swift版)

接上篇Swift手记1——Universal Links在Swift上的应用。学会如何使用通用链接(Universal Links)之后,接入微信分享SDK就手到擒来了。

直接对照微信官方文档iOS接入指南步骤进行即可,这里简单总结一下。

环境要求

SDK版本: SDK1.8.6或以上

微信版本: 7.0.7或以上

系统版本: iOS12或以上

微信Universal Links状态检查

也就是检查一下微信的通用链接是否可以正常使用,有两种方法(ps:使用真机且已安装微信):

1.在Safari中输入

https://help.wechat.com/app/ 

页面加载结束后下拉查看是否有跳转微信的入口,若无入口,可能是由于系统拉取微信Universal Links失败,请检查手机网络状态是否正常,或更新/重装微信,这也是接入指南中使用的方法。

跳转微信入口

2.在备忘录中输入

https://help.wechat.com/app/ 

输入完成后隐藏键盘,可以看到链接变成可点击的超链接状态,点击后可直接跳转到微信App。

确认App的Universal Links配置成功

即确认你的App是否已经支持Universal Links了,这个在上一篇文章Swift手记1——Universal Links在Swift上的应用中已经检查过了,pass。

开始接入

1.确保你的App已经完成Universal Links的配置且验证通过。

2.向微信注册你的应用程序id和Universal Links
请到 开发者应用登记页面 进行登记,登记并选择移动应用进行设置后,将获得AppID,可立即用于开发。但应用登记完成后还需要提交审核,只有审核通过的应用才能正式发布使用。
ps:这里记得要正确填写你的Bundle ID和在Universal Links。

3.通过cocoapods集成微信SDK。
⑴创建podfile文件
⑵添加pod 'WechatOpenSDK'
⑶执行pod install命令
⑷新建Header File文件(该SDK为OC版本,添加桥接文件后才能通过swift调用)
⑸添加代码#import "WXApi.h"
⑹编译通过,集成完毕

4. 在 Xcode 中,选择你的工程设置项,选中“TARGETS”一栏,在“info”标签栏的“URL type“添加“URL scheme”为你所注册的应用程序 id(如下图所示)。

偷懒用了官方文档的图

5.在Xcode中,选择你的工程设置项,选中“TARGETS”一栏,在 “info”标签栏的“LSApplicationQueriesSchemes“添加weixin 和weixinULAPI(如下图所示)。

又偷懒了

6.在Appdelegate中实现WXApiDelegate协议,并实现两个方法

func onReq(_ req: BaseReq)

是微信终端向第三方程序发起请求,要求第三方程序响应。第三方程序响应完后必须调用 sendRsp 返回。在调用 sendRsp 返回时,会切回到微信终端程序界面。

func onResp(_ resp: BaseResp)

如果第三方程序向微信发送了 sendReq 的请求,那么 onResp 会被回调。sendReq 请求调用后,会切到微信终端程序界面。

具体在此两方法中所要完成的内容由你定义,具体可参考微信开发工具包中的 SDK Sample Demo 源码。

7.在Appdelegate中向微信终端注册你的id

func  application(_application:UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey:Any]?) ->Bool{
    // Override point for customization after application launch.
    //向微信注册
    WXApi.registerApp("YOUR_APP_ID", universalLink: "YOUR_UNIVERSAL_LINKS")
    return true
}

8.重写 AppDelegate 的 handleOpenURL 和 openURL 方法:

func application(_application:UIApplication, handleOpen url:URL) ->Bool{

        return  WXApi.handleOpen(url, delegate:self)

}

func application(_app:UIApplication, open url:URL, options: [UIApplication.OpenURLOptionsKey:Any] = [:]) ->Bool{
    let urlKey: String = options[UIApplication.OpenURLOptionsKey.sourceApplication] as! String
    if urlKey == "com.tencent.xin" {            
        // 微信 的回调                    
        return  WXApi.handleOpen(url, delegate: self)            
    }            
    return true     
}

9.重写AppDelegate的continueUserActivity方法:

func application(_application:UIApplication, continue userActivity:NSUserActivity, restorationHandler:@escaping([UIUserActivityRestoring]?) ->Void) ->Bool{
    returnWXApi.handleOpenUniversalLink(userActivity, delegate:self)
}

10.最后,向微信发消息
可以在官网下载的demo中查看(WXApiRequestHandler中有各种消息分享的具体实现),这里提供一个发送文字消息和分享链接的Swift_demo

func sendText(text:String, inScene: WXScene){        
    let req=SendMessageToWXReq()        
    req.text=text        
    req.bText=true        
    req.scene=Int32(inScene.rawValue)        
    WXApi.send(req)    
}

/// 微信sdk分享链接    
/// - Parameters:    
///   - urlString: 链接    
///   - tagName: 分享标签    
///   - title: 分享标题    
///   - description: 分享描述    
///   - thumbImage: 分享图片    
///   - scene: 分享目标,会话(WXSceneSession)或者朋友圈(WXSceneTimeline)    
class func sendLinkURL(_ urlString: String, tagName: String, title: String, description: String, thumbImage: UIImage, in scene: WXScene){
    let ext = WXWebpageObject()        
    ext.webpageUrl = urlString                 

    let message = WXMediaMessage()        
    message.title = title        
    message.description = description        
    message.mediaObject = ext        
    message.messageExt = nil        
    message.messageAction = nil        
    message.setThumbImage(thumbImage)        
    message.mediaTagName = tagName                 

    let req = SendMessageToWXReq()        
    req.bText = false        
    req.scene = Int32(scene.rawValue)        
    req.message = message        
    WXApi.send(req)    
}

收!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,755评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,305评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,138评论 0 355
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,791评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,794评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,631评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,362评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,264评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,724评论 1 315
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,900评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,040评论 1 350
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,742评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,364评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,944评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,060评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,247评论 3 371
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,979评论 2 355

推荐阅读更多精彩内容