18910140161

如何将WeChat API添加到Swift项目中

顺晟科技

2021-06-16 10:59:34

194

我在尝试给我的项目增加微信分享功能,但是SDK文件、文档、开发指南、样本项目都在objective-C,我在用Swift写我的项目。

我试过了

我在我的项目中添加了以下软件开发工具包文件

libWeChatSDK.a

微信AuthSDK.h

WXApi.h

WXApiObject.h

我试着用这个回答建议的桥缝。

我的项目的桥,标题

#import 'WXApi.h '

错误

但是,我的代码还是不能使用微信API。我收到以下错误:

WXApiObject.h

-(void)setthumbimage :(ui image *)图像;//需要类型

WXApi.h

(BOOL)SendAuthReq :(SendAuthReq *)请求视图控制器: (UIViewController*)视图控制器delegate:(idWXApiDelegate)委托;

//需要类型

未知:0:错误:无法导入桥接标头“[我的路径]/我的项目-桥接-标头. h”

问题

有人用Swift项目成功使用过微信API吗?我很高兴看到一个简短的步骤列表或一些示例代码。我不在乎有没有中文资源的补充链接。

这个流程的更新见@成森的回答。

如何在Swift项目中使用微信SDK

官方微信开发者英文说明似乎已经过时,不完整。中文说明比较好但只处理客观-C以下步骤说明如何在你的项目中加入微信SDK。

申请微信App ID

英文网站是dev.wechat.com。但是在英文网站上注册不成功。我终于使用了中文网站:open.weixin.qq.com。如何做到这一点超出了这个回答的范围,但是如果你不懂中文,Google Translate可以帮忙。请注意,您可能需要一个中国的电话号码。

在你的申请被批准后(你只需要描述你的申请,不需要提供二进制或者源代码),你会得到一个申请ID,你会在代码中用到它。

下载微信SDK

你可以尝试使用英文网站上的SDK,但是写这篇文章的时候中文网站上好像有更新,所以我在这里下载SDK来获取这些说明。

我是从这个页面下载的SDK,微信SDK 1 . 6 . 2版的链接在这里。你可能想用最新的版本,不管以后是什么版本。

将SDK文件复制到Xcode项目中

为了组织,我把所有文件放在项目导航器的同一个组里。(实际文件仍在项目的根文件夹中。)

在此输入图像描述

错误修复:

在SDK 1.6.2中,问题中描述的问题出现,由@Anbu解决。卡希克的回答。只需在WXApiObject.h中添加#import UIKit/UIKit.h(实际上可以替换# import foundation/foundation.h)。如果使用1.6.2之后的一些SDK版本,可能就不再是这样了。

添加桥标题

请注意,有些SDK文件是Objective-C头文件(。h)文件。要在Swift项目中使用它们,您需要向项目中添加一个桥接头文件。添加一个新文件(文件新文件… iOS源文件头文件),并将其命名为您的项目名称-桥接-头. h .

将以下行添加到该文件中。

#import 'WXApi.h '

在我的项目中,这是我的桥头文件中的一行,因为这是微信SDK需要的一行。(在我创建头文件的时候,还有一些其他自动生成的代码行,但是我只是对它们进行了评论,因为我不知道它们做了什么。如果我发现它们有用,我会回来编辑这个答案。)

有关添加桥头的更多帮助,请参见这里、这里和这里。

无需将任何微信SDK文件导入Swift代码文件。

添加所需的框架和库

转到项目的“常规”选项卡,向下滚动到“链接框架和库”。单击加号()按钮添加以下必要的框架和库。

libc。待定

CoreTelephony.framework

libsqlite3.tbd

libz .待定

SystemConfiguration.framework

LibWeChatSDK.a(如果已经复制到项目中,应该已经存在了。)

现在应该是这样的:

在此输入图像描述

自述文件中提到了CoreTelephony,在线SDK安装说明中也提到了libc,反之亦然。我只是补充一下,他们都是安全的。如果你实际上不需要它们中的任何一个,请随时评论。

添加网址方案

转到项目的“信息”选项卡,展开“URL类型”项目。

添加一个标识符为微信的类型,网址方案是您使用微信成功注册应用程序后应该获得的AppID。

在此输入图像描述

编辑AppDelegate

编辑AppDelegate.swift文件以包含以下功能。请务必使用您的AppID,而不是示例。不然几乎可以复制粘贴。

导入UIKit

@UIApplicationMain

类别AppDelegate: UIResponder,UIApplicationDelegate,WXApiDelegate {

var window: UIWindow?

func application(application : ui application,DidFinishLaunchingWithOptions launch options 3360[nObject : any object]?)- Bool {

//微信:替换为你的AppID

wxapi . Registerapp(' wx 68 aa 08d 12 b 601234 ')

返回真

}

func application(application : ui application,HandleOpenURL URL : NSURL)-Bool {

返回WXApi.handleOpenURL(url,delegate: self)

}

func application(application : ui application,openURL url: NSURL,sourceApplication: String?annotation : AnyObject)-Bool {

返回WXApi.handleOpenURL(url,delegate: self)

}

func onReq(req: BaseReq!) {

//做可选的东西

}

func on esp(resp : base resp!) {

//做可选的东西

}

//.

}

关于onReq和onResp中可以执行的可选操作,请参考示例演示应用程序。(当前链接在这里,但如果链接断开,请在官方微信开发者文档中寻找示例演示。)

编辑信息列表

右键单击信息列表,然后选择作为源代码打开。然后在final/dict之前添加以下两个键:

密钥应用程序查询方案/密钥

排列

stringweixin/string

/array

keyNSAppTransportSecurity/key

词典

keynasallowsarbitraryloads/key

true/

/dict

根据SDK附带的自述文件,这是必要的,因为iOS 9限制http访问。

使用微信API

至此,你应该可以开始在Swift代码中使用微信API了。后面可能会补充更多的API例子,但以下是概念证明。

发短信

let message=SendMessageToWXReq()

message.text='Hello微信'

message.bText=true

message . scene=int 32(wxscenessession . raw value)//wxscenessession

WXApi.sendReq(消息)

我不能使用Objective-C定义的枚举WXSceneSession,所以我只使用它的整数值。可能有更好的解决办法,但是现在可以用了。

以上解决方案已经过Xcode 7.2和iOS 9.2测试。

我们已经准备好了,你呢?
2024我们与您携手共赢,为您的企业形象保驾护航