在本地配置host后,用域名访问会出现Invalid Host header 解决方法:在vue-cli版本为2.x的情况下修改vue.config.js中的devServer对象加入disableH
顺晟科技
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测试。
29
2021-08
29
2021-08
29
2021-08
16
2021-06
16
2021-06
16
2021-06