如何初始化 Kony Fabric 客户端

How to initialize Kony Fabric client

我是该平台的新手,在初始化 Kony Fabric 客户端和使用集成服务时遇到问题。有没有link或参考资料?

您可以参考文档中提到得很好的地方。 手动初始化 kony fabric 客户端:

//Sample code to initialize Kony Fabric Client
var appkey = <your-app-key>
var appsecret = <your-app-secret>
var serviceURL = <your-service-url>

var client = new kony.sdk();
client.init(appkey, appsecret, serviceURL, function(response) {
    kony.print("Init success");
}, function(error) {
    kony.print("Init Failure");
});

您可以使用client来使用服务。但是不推荐手动初始化。您应该始终应该始终使用 initWithServiceDoc 有关详细信息,请参阅 link:

http://docs.kony.com/konylibrary/konyfabric/kony_fabric_user_guide/Content/KonyStudio/Installing_KonyJS_SDK.htm

您实际上不必显式初始化。这是一个不必要的头痛,原因如下。

另外,我个人不建议对 API 密钥和秘密进行硬编码。尽管您可能会在文档中找到相关示例,但 Kony (now Temenos Quantum) 实际上并不推荐这样做。

不推荐的原因:

  1. 在Fabric中取消发布应用,再次发布时会遇到麻烦,因为key和secret会变。这将导致问题,因为您必须再次修改代码并构建 WAR 文件和二进制文件。我看到很多团队在生产中都面临这个问题。

  2. 你必须维护一个配置文件来为每个环境保留不同的 API 密钥和秘密对——例如开发、质量检查、生产。

首选方法是使用 Quantum 专门为此目的公开的变量。变量的名称是 KNYMobileFabric。你可以这样:

var client = KNYMobileFabric;
client.getIntegrationService(...)

注意:当您构建应用程序时,您必须在可视化工具 IDE 中登录您的云帐户,以便获取服务定义。通过使用左侧的 "MobileFabric" 菜单项将应用程序与其对应的 Fabric 相关联。下拉菜单将有一个名为 "Link Application"

的选项

文档中有更详细的示例:

http://docs.kony.com/konylibrary/konyfabric/kony_fabric_user_guide/Content/KonyStudio/Installing_KonyJS_SDK.htm

除了@AshishKumar 的回答之外,这一切都在这里得到了很好的记录:

http://docs.kony.com/7_x_PDFs/mobilefabric/kony_docsets/kony/kony-sdk.doc/kony.sdk.html

与@highhope 在他的回答中所说的相反, 手动初始化也有明显的优势。例如,代码完成在手动初始化时效果很好,但在 KNYMobileFabric 中就完全不行了。此外,即使您确实使用 KNYMobileFabric 方法,您所有环境的密钥仍然会硬编码在 mBaas.properties 文件中。最后,当您发布更新版本的 Fabric 应用程序时,您 可以 保持应用程序的密钥和秘密不变,所以这也不是问题。

更新:

可以找到更新的 v9.x 文档 here

初始化机制已经发展,不再有 mBaas.properties 文件。

此外,Fabric 现在允许您 configure things like the key and secret during publication 中间件集成,因此如果您选择对它们进行硬编码,则可以随着时间的推移保持它们不变。

综上所述,当前推荐的机制是允许 SDK 在构建时获取密钥和机密,以便它可以为您初始化。然后,您可以使用 getCurrentInstancegetDefaultInstance 函数获取 SDK 的初始化实例。

我通常通过创建一个名为 getSdk.js 的 RequireJS 模块来做到这一点——我通常将它放在一个名为 utilmodules/require/util/getSdk.js 的应用程序组(一个文件夹,在 Visualizer 术语中)。

define(function () {
    function getSdk(){
        var sdk = kony.sdk.getCurrentInstance() || kony.sdk.getDefaultInstance()
        if(sdk === null || typeof sdk === "undefined" || !sdk){
            throw new Error(
                "Error: Null Kony SDK. There's no current or default kony.sdk instance."
            )
        }
        return sdk
    }
    return getSdk
})

然后我要求在我的控制器或其他模块中这样:

define(["util/getSdk"], function (getSdk) {
    getSdk().getIntegrationService(...)
})

注意: 遗留变量 KNYMobileFabric 是一个全局变量,意思是 shorthand 和获取 SDK 默认实例的简单方法。我不是特别喜欢那样。