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)    
}

收!

你可能感兴趣的:(Swift手记2——iOS接入微信SDK分享(Swift版))