如何在对应OS上的Nativescript中集成平台依赖的SDK

Posted

技术标签:

【中文标题】如何在对应OS上的Nativescript中集成平台依赖的SDK【英文标题】:How to integrate platform dependent SDKs in Nativescript on the corresponding OS 【发布时间】:2018-01-19 20:46:13 【问题描述】:

我想尝试将 Braintree SDK 集成到现有的 NativeScript-Mobile 应用程序中。由于 SDK 仅适用于其原生平台,因此我考虑使用 NS-Marshalling 在相应的操作系统上执行平台相关的 SDK。

由于我很确定它不会那么容易,所以我想到了两种可能性: 实现依赖于相应语言(例如 ios - Objective-C/Swift)的模块平台,如 Braintree 方面(https://developers.braintreepayments.com/start/hello-client/ios/v3)中提到的,并从 NativeScript 集成它们平台依赖(我把它想象成一个模块,我说使用这个列表对象,我收到“付款成功”或“付款失败”响应)。然后,OS-Dependend 模块将完成其余的工作(评估、SDK 交互等)。

另一种方法是将每段代码编组到 JS 模块中,并根据平台执行 JS 模块。我缺少的只是集成模块的可能性,因为我不知道应该如何通过 javascript 导入和访问“-Library(我什至不认为这是可能的)。

您如何看待这种方法?是否有可能以一种或另一种方式做到这一点?

【问题讨论】:

【参考方案1】:

您可以在 NativeScript 中使用原生库(例如 CocoaPods、dynamic and static libraries for iOS 和 *.aar and *.jar for android)并通过 JavaScript/TypeScript 访问它们。在我看来,最好的方法是创建一个 NativeScript plugin 并使用数据转换 (marshalling for iOS) 通过 JavaScript/TypeScript 公开所需的功能 (和here the respective article for Android)

Android 推荐你也可以add dependencies to a library through the gradle file

【讨论】:

感谢您的回答!所以 - 为我澄清这一点:最好的方法是为我创建一个我会调用的插件,它可以很好地区分两个 SDK 并为我完成其余的工作(并且基本上返回“工作”或“没有”工作”)?

以上是关于如何在对应OS上的Nativescript中集成平台依赖的SDK的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Nativescript-Vue 中直接监听组件根元素上的原生事件?

设备上的 Nativescript iOS 应用程序分析

设备上的 nativescript livereload

NativeScript:标签上的最大行数

如何在 NativeScript Vue 中设置“nativescript-stripe”

如何在 nativescript 中显示模态视图时将窗口背景变为黑色