APP需要增加QQ登录功能,首先先下载QQ的SDK的最新版本(http://wiki.connect.qq.com/sdk%E4%B8%8B%E8%BD%BD)
首先,我们新建一个Android的绑定库,项目名称为QQ.Binding.Android,将下载的SDK解压后找到libs目录下面的open_sdk_r6019_lite.jar,将其复制到Jars文件夹。
执行一次编译,会出现两个错误:
obj/Release/generated/src/Com.Tencent.Tauth.IUiListener.cs(165,28,165,30): error CS0102: The type 'CompleteEventArgs' already contains a definition for 'p0'
obj/Release/generated/src/Com.Tencent.Tauth.IUiListener.cs(166,35,166,37): error CS0102: The type 'CompleteEventArgs' already contains a definition for 'P0'
于是乎我们针对性的修改一下Transforms\Metadata.xml,修改后的内容为
<?xml version="1.0" encoding="UTF-8"?>
<metadata>
<attr path="/api/package[@name='com.tencent.tauth']/interface[@name='IUiListener']/method[@name='onComplete']" name="argsType">UiCompleteEventArgs</attr>
</metadata>
重新编译成功。
下面编译iOS的版本
解压下载的SDK,找到TencentOpenAPI.framework这个包,其实是一个文件夹,打开之后找到TencentOpenAPI,将其改名为TencentOpenAPI.a
3、创建一个iOS的绑定项目,将这个文件拖到根目录
4、下载并安装https://dl.xamarin.com/objective-sharpie/ObjectiveSharpie.pkg
5、切换到TencentOpenAPI.framework的上级目录
执行cd命令切换到TencentOpenAPI.framework所在的目录
执行以下命令,生成绑定文件
sharpie bind --output=QQ.Binding.iOS --namespace=QQ.Binding.iOS -sdk iphoneos12.2 -scope ./TencentOpenAPI.framework/Headers/ ./TencentOpenAPI.framework/Headers/*.h
这个版本要跟xcode的版本一致,如果不知道自己的xcode版本,可以执行
sharpie xcode -sdks
6、刚才切换到的目录下面的ApiDefinitions.cs文件拷贝到项目的ApiDefinition.cs
7、StructsAndEnums.cs里面的内容也拷贝到Structs.cs
8、编译之前,将接口ITencentLoginDelegate改名为TencentLoginDelegate,ITencentWebViewDelegate改名为TencentWebViewDelegate
9、将重复定义Static,我们把这行删除掉。(不知道为什么这个Constants接口会分为两部分了,这个没有问题,但是定义两次Static就不行了)
10、这里TencentAuthorizeState是一个枚举类型,不知道怎么搞成指针了。。删掉*号
PS:那些[Verify (ConstantsInterfaceAssociation)]这种错误全部删除可以直接删除的
编译生成即可。