WechatKit
入门
- CocoaPods
pod 'WechatKit'
- Carthage
github "starboychina/WechatKit"
设置
-
设置URL scheme
在 Xcode 中,选择您的工程设置项,选中“TARGETS”选项卡,在“info”标签页的“URL type”中添加“URL scheme”,为其在微信开放平台注册的应用程序 ID。
-
从 iOS9 开始,需要将 weixin 添加到白名单(如图所示)
或以源代码方式打开 info.plist,并添加以下内容。
<key>LSApplicationQueriesSchemes</key>
<array>
<string>wechat</string>
<string>weixin</string>
</array>
-
AppDelegate 的 handleOpenURL 和 openURL 方法:
在 AppDelegate.swift 中添加 import WechatKit
/// iOS 9 以后将弃用 请用下面的方法 #20
/// -> NS_DEPRECATED_IOS(4_2, 9_0, "Please use application:openURL:options:") __TVOS_PROHIBITED;
func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
return WechatManager.shared.handleOpenURL(url)
// 如需要使用其他第三方可以 使用 || 连接 其他第三方库的handleOpenURL
// return WechatManager.shared.handleOpenURL(url) || TencentOAuth.HandleOpenURL(url) || WeiboSDK.handleOpenURL(url, delegate: SinaWeiboManager.shared) ......
}
/// iOS 9.0 以后请使用这个方法
/// Please use this (application:openURL:options:)
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
return WechatManager.shared.handleOpenURL(url)
// 如需要使用其他第三方可以 使用 || 连接 其他第三方库的handleOpenURL
// return WechatManager.shared.handleOpenURL(url) || TencentOAuth.HandleOpenURL(url) || WeiboSDK.handleOpenURL(url, delegate: SinaWeiboManager.shared) ......
}
用法
- 注册应用
WechatManager.appid = "微信开放平台,注册的应用程序id"
WechatManager.appSecret = "微信开放平台,注册的应用程序Secret"
- 检测微信是否已安装
WechatManager.shared.isInstalled()
-
使用微信登录
默认情况下会记住 openid 以及 access_token,在 token 有效期内调用 checkAuth 不会打开微信客户端,直接使用 token 和微信服务器获取认证信息
WechatManager.shared.checkAuth { result in
switch result {
case .failure(let errCode)://登录失败
print(errCode)
case .success(let value)://登录成功 value为([String: String]) 从微信返回的openid access_token 以及 refresh_token
print(value) //当前是在子线程,如需回到主线程调用 DispatchQueue.main.async { print(value) }
}
}
-
[注意]
-
如果没有安装微信客户端,则将弹出 webview,通过输入已绑定微信的手机号接收认证短信,然后在手机浏览器中打开认证短信中的地址(类似:wxd930ea5d5a258f4f://wapoauth?m=KzgxNzAxMzExMTY2Ng%3D%3D&t=xxxx,其中 xxxx 为4位数字),会自动跳回到您的 APP,并实现登录功能。
-
如果是 iPad 则不支持短信认证,建议在 iPad 上接入微信登录时,先检测用户手机是否已安装微信客户端(使用WechatManager.shared.isInstalled()函数),对未安装的用户隐藏微信登录按钮,只提供其他登录方式(比如手机号注册登录、游客登录等)。
-
-
获取微信用户信息
WechatManager.shared.getUserInfo { result in
switch result {
case .failure(let errCode)://获取失败
print(errCode)
case .success(let value)://获取成功 value为([String: String]) 微信用户基本信息
print(value) //当前是在子线程,如需回到主线程调用 DispatchQueue.main.async { print(value) }
}
}
-
退出登录
由于默认会记住openid,以及access_token,如需要切换用户则需要退出登录。
WechatManager.shared.logout()
- 分享到微信
WechatManager.shared.shareDelegate = self
/**
分享
- parameter scence: 请求发送场景
- parameter image: 消息缩略图
- parameter title: 标题
- parameter description: 描述内容
- parameter url: 地址
- parameter extInfo: app分享信息(点击分享内容返回程序时,会传给WechatManagerShareDelegate.showMessage(message: String)
*/
WechatManager.shared.share(scence: WXScene, image: UIImage?, title: String, description: String, url: String? = default, extInfo: String? = default)
- 委托
//app分享后 点击分享返回时调用
func showMessage(message: String)