现在iOS的推送其实并不复杂,但是为了统一安卓与苹果的推送,我们通常会使用信鸽来做推送。
所以我们依然面临需要做绑定的问题。
对于Framework类型的文件的绑定会比较简单,但是Object C的库会经常出现一些莫名其妙的问题。
1、下载信鸽的iOS版本的SDK,并解压
2、将libXG-SDK.a文件拷贝到绑定库
3、默认生成的libXG-SDK.linkwith.cs文件是有问题的:
using ObjCRuntime;
[assembly: LinkWith (libXG-SDK.a, SmartLink = true, ForceLoad = true)]
为了获取这个库支持的架构,我们执行一下
xcrun -sdk iphoneos lipo -info libXG-SDK.a
得到的架构结果是
armv7 arm64 i386 x86_64
于是我们改一下:
[assembly: LinkWith ("libXG-SDK.a", LinkTarget.ArmV7 | LinkTarget.Arm64 | LinkTarget.Simulator | LinkTarget.Simulator64, SmartLink = true, ForceLoad = true)]
4、下载https://dl.xamarin.com/objective-sharpie/ObjectiveSharpie.pkg
并安装,并执行
sharpie xcode -sdks
看看支持的sdk
sdk: appletvos11.4 arch: arm64
sdk: iphoneos11.4 arch: arm64 armv7
sdk: macosx10.13 arch: x86_64 i386
sdk: watchos4.3 arch: armv7k
5、执行
sharpie bind --output=Xinge -scope . --namespace=XinGe.Binding.iOS --sdk=iphoneos11.4 XGPush.h
6、拷贝ApiDefinitions.cs到ApiDefinition.cs,StructsAndEnums.cs拷贝到Structs.cs
7、将枚举类型继承自nuint改成ulong
8、将XGNotificationCategory的基类改成INativeObject