MASA MAUI iOS 如何绑定微信
背景
MAUI 的出现,赋予了广大 Net 开发者开发多平台应用的能力,MAUI 是 Xamarin.Forms 演变而来,但是相比 Xamarin 性能更好,可扩展性更强,结构更简单。但是 MAUI 对于平台相关的实现并不完整。所以 MASA 团队开展了一个实验性项目,意在对微软 MAUI 的补充和扩展
项目地址https://github.com/BlazorComponent/MASA.Blazor/tree/main/src/Masa.Blazor.Maui.Plugin
每个功能都有单独的 demo 演示项目,考虑到 app 安装文件体积(虽然 MAUI 已经集成裁剪功能,但是该功能对于代码本身有影响),届时每一个功能都会以单独的 nuget 包的形式提供,方便测试,现在项目才刚刚开始,但是相信很快就会有可以交付的内容啦。
前言
本系列文章面向移动开发小白,从零开始进行平台相关功能开发,演示如何参考平台的官方文档使用 MAUI 技术来开发相应功能。
介绍
App 开发中难免不了要对接第三方平台,这些平台官网也提供了 SDK 供开发者使用。
对于 Android 和 iOS 平台而言,只需要下载官方的 SDK,按照官方说明文档进行集成就可以轻松实现了。
但是对于 MAUI 来说,并没有官方的 SDK,这个时候就需要我们绑定适用于.NET MAUI 的本机库。
本文主要介绍在 MAUI 中如何完成 iOS 绑定库,相比较 Android 绑定,iOS 绑定会麻烦些,接下里让我们一步步在 MAUI 中实现 iOS 微信 SDK 的绑定。
*以下过程,均在 macOS 上操作
前置环境准备
Xcode 13.4.1
Visual Studio for mac 2022
安装 Sharpie, Shapie 是一个非常好用的转换工具,它支持在 macOS 下对 Objective-C 的库的转换。通过 Sharpie 可以对库文件给出的头文件进行转换完成 C# 的绑定。
通过 Sharpie 工具生成 C# 调用的接口
下载微信 iOS SDK,打开后里面有 libWeChatSDK.a 的静态库和三个头文件(.h)
我们需要将这几个.h 文件转换为 C#文件,这时候就需要用到Objective Sharpie工具
这里需要注意指定-scope。
-scope 如果没有参数,Objective Sharpie 将尝试为导入的任何 iOS SDK 标头生成绑定,例如 #import <UIKit.h>,生成一个巨大的定义文件,在编译绑定项目时可能会生成错误。使用 -scope 参数集时,Objective Sharpie 不会为作用域文件夹之外的任何标头生成绑定。
转换成功后,会在你指定的文件夹生成 ApiDefinitions.cs 和 StructsAndEnums.cs,StructsAndEnums.cs 对应的是一些常量和枚举类型, ApiDefinitions.cs 对应的是一些接口和方法。
创建 MAUI 的 iOS 绑定项目
通过命令行创建 MAUI 的 iOS 绑定库
将生成的 ApiDefinitions.cs 和 StructsAndEnums.cs 替换掉项目对应内的文件并对.csproj 调整
生成一下,发现报错了
看了文档之后,了解到 Verify 标注只是让我们确认转换是否正常,删除掉即可。删除 verify 后得到以下界面
这里忘记了添加对静态库 libWeChatSDK.a 文件的引用,添加下并根据微信文档对.csproj 调整
生成后发现还有报错
删除 AutoGeneratedName,删除后显示生成成功
绑定成功后如何确定程序已经运行?让我们接着往下看
测试绑定库
创建一个 MAUI Blazor 项目并给项目添加绑定库的引用
测试一下微信分享(这里只是演示 appid 和 Universal Links 要换成你自己的)
根据微信文档,在 Info.plist 中增加对应配置
最后来看一下真机效果
踩坑记录
本人一开始用的 Xcode 14,发现在 Xcode14 中无法真机调试,给官方提了 issues,当时 Xcode 14 对 MAUI 还没有很好的支持,根据官方的意见退回到了 Xcode 13.4.1。
使用 Sharpie 要指定-scope,做 MAUI 的 iOS 微信 SDK 绑定前看了一些 Xamarin ios 绑定的文章,里面用 Sharpie 都没有指定 scope,照着指令敲转换生成的入口文件带大量无法编译的错误,到不了 Verify 那一步,看了官网文档后才了解到需要指定 scope。
MAUI 引用做好的 iOS 绑定库,发现代码智能感知失效了,但是可以成功构建项目,目前要解决绑定库智能感知的问题,我的做法是直接引用生成的程序集。
如果你对我们的开源项目感兴趣,无论是代码贡献、使用、提 Issue,欢迎联系我们
WeChat:MasaStackTechOps
QQ:7424099
版权声明: 本文为 InfoQ 作者【MASA技术团队】的原创文章。
原文链接:【http://xie.infoq.cn/article/45be7752758bc44533a6838ae】。文章转载请联系作者。
评论