Share to Wechat with Swift
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
Screenshots
WechatShare.xcodeproj
WechatShare.xcworkspace
WechatShare
WechatShareTests
WechatShareUITests
.gitignore
Podfile
Podfile.lock
README.md

README.md

WechatShareDemo

Installation

这里的安装主要是一些前期准备,包括获取 AppID,集成微信的 WechatOpenSDK 等。

Step 1

微信开放平台注册应用程序ID,获得AppID。

微信对新建的应用需要审核,审核需要7天,所以这里借用了WeDemo的AppID

Step 2

  1. 添加URL schemes为AppID,这样微信可以回调起你的app。

  2. 在info.plist中添加白名单,否则在没有安装微信的环境(比如模拟器)中会报错 -canOpenURL: failed for URL

Step 2

  1. 通过 CocoaPods 集成微信 SDK

    pod 'WechatOpenSDK'
    
  2. 添加 Objective-C Bridging Header

    确认在Building setting - Swift Compiler - Code Generation 中添加了bridging header的路径。比如"“YourApp/YourApp-Bridging-Header.h”

  3. YourApp-Bridging-Header.h 中添加下面的代码

    #import “WXApi.h”

    然后不用import,就可以在Swift中使用相关方法了。

Usage

  1. 向微信终端程序注册第三方应用

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {        
            WXApi.registerApp("APP-ID")
            return true
    }
  2. 发送请求到微信

    过程:创建多媒体消息(WXMediaMessage)或者富文本(String)消息,然后创建SendMessageToWXReq请求,最后通过WXApi.send()方法向微信发起请求。

    // 1. 创建多媒体消息(WXMediaMessage)或者富文本(String)消息
    class func message(_ title: String?, _ description: String?, _ mediaObject: Any, _ messageExt: String? = nil, _ messageAction: String? = nil, _ thumbImage: UIImage? = nil, _ tagName: String? = nil) -> WXMediaMessage {
        ...
    }
    
    // 2. 创建SendMessageToWXReq请求
    class func request(_ text: String?, _ message: WXMediaMessage?, _ bText: Bool, inScene scene: WXScene) -> SendMessageToWXReq {
        ...
    }
    
    // 3. 通过WXApi.send()方法向微信发起请求
    let message = WXMediaMessage.message(nil, nil, ext, messageExt, action, thumbImage, tagName)
    let request = SendMessageToWXReq.request(nil, message, false, inScene: scene)
    WXApi.send(request)
  3. 处理微信的回应

    遵守 WXApiDelegate 协议,实现 onResp 方法

Demo

Demo 简单封装了一个 ShareManager,并提供下面三种分享方式。

// 分享文字
ShareManager.shared.sendText(text, inScene: WXSceneSession)
// 分享图片
ShareManager.shared.sendImage(imageData, inScene: WXSceneTimeline)
// 分享网页链接
let url = "https://httpbin.org/get"
ShareManager.shared.sendLink(url, text, inScene: WXSceneSession)