如何初始化 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:
您实际上不必显式初始化。这是一个不必要的头痛,原因如下。
另外,我个人不建议对 API 密钥和秘密进行硬编码。尽管您可能会在文档中找到相关示例,但 Kony (now Temenos Quantum) 实际上并不推荐这样做。
不推荐的原因:
在Fabric中取消发布应用,再次发布时会遇到麻烦,因为key和secret会变。这将导致问题,因为您必须再次修改代码并构建 WAR 文件和二进制文件。我看到很多团队在生产中都面临这个问题。
你必须维护一个配置文件来为每个环境保留不同的 API 密钥和秘密对——例如开发、质量检查、生产。
首选方法是使用 Quantum 专门为此目的公开的变量。变量的名称是 KNYMobileFabric
。你可以这样:
var client = KNYMobileFabric;
client.getIntegrationService(...)
注意:当您构建应用程序时,您必须在可视化工具 IDE 中登录您的云帐户,以便获取服务定义。通过使用左侧的 "MobileFabric" 菜单项将应用程序与其对应的 Fabric 相关联。下拉菜单将有一个名为 "Link Application"
的选项
文档中有更详细的示例:
除了@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 在构建时获取密钥和机密,以便它可以为您初始化。然后,您可以使用 getCurrentInstance
或 getDefaultInstance
函数获取 SDK 的初始化实例。
我通常通过创建一个名为 getSdk.js
的 RequireJS 模块来做到这一点——我通常将它放在一个名为 util
、modules/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 默认实例的简单方法。我不是特别喜欢那样。
我是该平台的新手,在初始化 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:
您实际上不必显式初始化。这是一个不必要的头痛,原因如下。
另外,我个人不建议对 API 密钥和秘密进行硬编码。尽管您可能会在文档中找到相关示例,但 Kony (now Temenos Quantum) 实际上并不推荐这样做。
不推荐的原因:
在Fabric中取消发布应用,再次发布时会遇到麻烦,因为key和secret会变。这将导致问题,因为您必须再次修改代码并构建 WAR 文件和二进制文件。我看到很多团队在生产中都面临这个问题。
你必须维护一个配置文件来为每个环境保留不同的 API 密钥和秘密对——例如开发、质量检查、生产。
首选方法是使用 Quantum 专门为此目的公开的变量。变量的名称是 KNYMobileFabric
。你可以这样:
var client = KNYMobileFabric;
client.getIntegrationService(...)
注意:当您构建应用程序时,您必须在可视化工具 IDE 中登录您的云帐户,以便获取服务定义。通过使用左侧的 "MobileFabric" 菜单项将应用程序与其对应的 Fabric 相关联。下拉菜单将有一个名为 "Link Application"
的选项文档中有更详细的示例:
除了@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 在构建时获取密钥和机密,以便它可以为您初始化。然后,您可以使用 getCurrentInstance
或 getDefaultInstance
函数获取 SDK 的初始化实例。
我通常通过创建一个名为 getSdk.js
的 RequireJS 模块来做到这一点——我通常将它放在一个名为 util
、modules/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 默认实例的简单方法。我不是特别喜欢那样。