flutter - Flutter 项目的 Urban Airship 集成?
问题描述
我们的团队刚刚开始比较 Xamarin 和 Flutter。一开始,Flutter 似乎更新(不那么经过战斗),但在热重载和双原生输出等细节方面更加性感。然而,在久经沙场的战线上,Xamarin 与 Urban Airship 的集成是有据可查的。这是我们项目的症结所在,因为 Urban Airship 是一项要求,因此我们倾向于 Xamarin。
但是为了给 Flutter 一个公平的震动,我想我会问:如何将 Urban Airship 集成到 Flutter 项目中?(显然需要同时使用 Android 和 iOS。)
到目前为止,我的 google-fu 并不乐观。
解决方案
Flutter 与原生的、特定于平台的库交互的解决方案是plugins。这是一个可重用的包,主要包含 Dart 代码、一些 swift 或 objC 代码、一些 java 或 kotlin 代码、一个示例/测试 Flutter 应用程序和一些单元测试。Dart 代码定义了一个通用接口,其他语言代码提供到各个平台的绑定,在您的情况下,供应商提供了库。IDE 将为您创建一个完整的插件工作模板,并且有很多示例可以从 pub 中获得灵感。
在实现 ios 本机代码时使用 xcode,在实现 android 特定代码时使用 android studio(或 IDEA)。幸运的是,由于您只是编写了一些绑定,因此本机代码通常相当薄。
通常 Dart 代码调用本地方法,但相反的也可以。本机代码也可以生成事件。Flutter 负责将 Dart 参数和返回值转换为原生值,并支持简单类型、Lists、Maps 等。
您团队中熟悉两个平台上的供应商库的人应该能够定义通用的 Dart api(您使用的功能的子集)并实现本机绑定。该插件处理其余部分。
推荐阅读
- jquery - 如何合并 2 个不同的 jquery 事件函数?
- mongodb - Mongodb多级聚合
- spring - 如何在Springboot中的url中的上下文之后添加自定义字符串“api”?
- javascript - 带密钥的加解密视频链接
- c# - 是否可以将 oxyplot 保存到列表中?
- three.js - 创建磨砂玻璃三webgl
- javascript - 以角度增加/减少页面中所有元素的字体大小
- c# - 我想开始限制项目插槽,然后按 M 更新扩展插槽
- android - adb.exe 无法启动
- java - 为什么这段代码会抛出 IllegalStateMonitorException