无法在 IBM MobileFirst 6.3 中调用 window.plugins

Posted

技术标签:

【中文标题】无法在 IBM MobileFirst 6.3 中调用 window.plugins【英文标题】:Not able to call window.plugins in IBM MobileFirst 6.3 【发布时间】:2015-07-31 11:46:41 【问题描述】:

我使用的是 MobileFirst 6.3。我无法调用 window.plugins.XXX(我想使用 SSLcertificateChecker 作为 XXX)。但是 window.plugins 是未定义的。

我想将来自https://github.com/EddyVerbruggen/SSLCertificateChecker-PhoneGap-Plugin 的 SSLCertificateChecker phonegap 插件包含到我的 worklight 项目中。

    首先我尝试了 ios。我正在手动添加所有文件。

    已添加

    <feature name="SSLCertificateChecker">
        <param name="ios-package" value="SSLCertificateChecker" />
    </feature> in config.xml
    将依赖项添加到 Security.framework 并将 SSLCertificateChecker.* 复制到插件文件夹

但在实施过程中,window.plugins 未定义。无法继续。

【问题讨论】:

请用一个更完整的例子更好地解释你试图做什么。什么是window.plugin?这是从哪里来的,为什么你认为它应该工作,你在哪个环境中测试它? 如果我错了,请纠正我,Idan。 查看我的回答如何将此插件添加到您的应用程序。 您的解决方案有效,将其标记为答案。谢谢! 【参考方案1】:

它应该按照我提供的 in this answer 相同的说明工作,只是根据你的调整。

注意:我在那里写的相同警告也适用于这里。即:在 MobileFirst Studio 中执行的每个构建中,都会重新生成文件 cordova_plugins.js,因此您将丢失您将在此文件中执行的所需更改,并且您将需要一遍又一遍地重新执行它们。

一个可能的解决方案是升级到即将发布的 MobileFirst Platform Foundation 7.1,它引入了对另一类应用程序类型的支持 - Cordova 应用程序,并将 MobileFirst SDK 集成为插件,从而使您能够使用 Cordova Plug-man(或任何其他方法)安装 3rd 方插件,就像在任何基于 Cordova 的应用程序中一样。 7.1 之前的版本不支持 Cordova Plug-man。否则,你只需要找到围绕它的构建技巧。


工作室

config.xml

    将插件声明添加到 your-app\iphone\native\config.xml

index.html

    将以下内容添加到header 元素:

    <script type="text/javascript" src="js/SSLCertificateChecker.js"></script>
    

SSLCertificateChecker.js

    确保将 SSLCertificateChecker.js 文件放在 your-app\common\js 文件夹中。

    编辑文件。

    在顶部添加:

    cordova.define("nl.x-services.plugins.SSLCertificateChecker", function(require, exports, module) 
    

    在底部添加:);

构建

    在 MobileFirst Studio 中构建项目并在 Xcode 中打开它

Xcode

    在构建阶段添加所需的 Security.framework(但很可能已经存在)

    右键单击项目根文件夹,选择“将文件添加到...”并复制提供的 .h 和 .m 文件

    导航到 native\www\default\worklight\cordova_plugins.js 并添加以下内容。这也是您每次在 MobileFirst Studio 中进行构建时都必须重新编辑的文件...

    
        "file": "../js/SSLCertificateChecker.js",
        "id": "nl.x-services.plugins.SSLCertificateChecker",
        "clobbers": [
            "window.plugins.sslCertificateChecker"
        ]
    ,
    

    在 iOS 模拟器或设备上运行。

【讨论】:

感谢 Idan 快速及时的回复。这现在工作得很好。将您的上述方法用于iOS。还有安卓。对于 android,在 cordova_plugins.js 中添加了相同的内容。但是,正如您提到的,每次我们进行构建时都需要编辑这个 cordova_plugins。谢谢! 我写了一篇博文,提出了一个可能的解决方案:developer.ibm.com/mobilefirstplatform/2015/08/03/… 您的帖子在集成过程中也一定会帮助其他人。感谢您抽出时间来写这篇文章。 您好 Idan,我们在部署过程中遇到问题。由于我们通过在 application-descriptor 中设置标志 .. 来加密 Web 资源,因此我们无法编辑 cordova_plugin.js .. 我们还需要与此插件一起加密资源。是否有任何调整 很抱歉,但在这种情况下,我认为无法编辑此文件,因为它位于加密的 .zip 文件中,因此您无法在构建后访问它。跨度>

以上是关于无法在 IBM MobileFirst 6.3 中调用 window.plugins的主要内容,如果未能解决你的问题,请参考以下文章

运行 IBM MobileFirst 6.3 CLI 时无法检索 NativeApplicationBuilder

IBM MobileFirst 6.3 中的混淆

修复 WP 弹跳 IBM MobileFirst 6.3

IBM MobileFirst 6.3 - Android 指纹认证

IBM MobileFirst 6.3 异步 API

IBM MobileFirst 6.3 在应用程序启动时触发推送事件源回调