【问题标题】:Cordova Card.IO plugin implementationCordova Card.IO 插件实现
【发布时间】:2016-09-24 23:59:37
【问题描述】:

我在为 Cordova 实现 Card.io 插件时遇到了一些问题。 github页面上有关于如何安装和实现插件的说明:https://github.com/card-io/card.io-Cordova-Plugin

我通过做添加了暴跌

$ cordova plugin add https:///...

并添加了他们告诉您添加到 github 页面上的按钮。到目前为止,我很确定我正在按照我应该做的一切。现在问题来了,应用程序中的实际实现。我在我的应用程序中使用了一个 ui 框架,因此,我没有 index.js 文件,我的代码在 deviceReady 处理方面也不像标准 index.js 中的代码。我只是...

.ready(function() {
    // Code to fire on device ready.
}):

我对回调有点熟悉,但我不知道他们的示例中发生了什么。整个“示例:function() {...”对我来说是全新的。

有人可以重写该示例,使其成为一些结构良好且更有意义的函数吗?

我试过这样做,我的代码现在看起来像这样:

   .ready(function() {
        CardIO.canScan(onCardIOCheck);
    });

    function onCardIOComplete() {
        var cardIOResponseFields = [
            "cardType",
            "redactedCardNumber",
            "cardNumber",
            "expiryMonth",
            "expiryYear",
            "cvv",
            "postalCode"
        ];

        var len = cardIOResponseFields.length;
        alert("card.io scan complete");
        for (var i = 0; i < len; i++) {
            var field = cardIOResponseFields[i];
            alert(field + ": " + response[field]);
        }
    }

    function onCardIOCancel() {
        alert("card.io scan cancelled");
    }

    function onCardIOCheck(canScan) {
        alert("card.io canScan? " + canScan);
        var scanBtn = document.getElementById("scanBtn");
        if (!canScan) {
          scanBtn.innerHTML = "Manual entry";
        }

        scanBtn.addEventListener("click", function(e) {
            var options = {
                "requireExpiry": true,
                "requireCVV": false,
                "requirePostalCode": false,
                "restrictPostalCodeToNumericOnly": true
            };
            CardIO.scan(options, onCardIOComplete, onCardIOCancel);
        });
      }

但这不起作用。我在 .ready() 函数内的调用两侧添加了 alert() ,以查看它是否触发。两者都会触发,但就好像 Card.canScan() 函数根本不会触发一样。我还在 onCardIOCheck 函数中添加了一个 alert(),以查看它是否曾经到达过,但它没有。

任何帮助将不胜感激。

(请注意:我不使用 Angular.js,我只使用纯 Javascript 和偶尔的 jQuery)

【问题讨论】:

    标签: cordova plugins card.io


    【解决方案1】:

    你需要更换

    .ready(function() {
        CardIO.canScan(onCardIOCheck);
    });
    

    document.addEventListener('deviceready', function() {
        CardIO.canScan(onCardIOCheck);
    }, false);
    

    您使用的 ready 事件是 DOM 的 ready 事件,而不是 cordova 插件。我相信当您调用 CardIO.canScan(onCardIOCheck); 时,插件没有加载,这就是它无法正常工作的原因。

    【讨论】:

    • 谢谢,我试过你的解决方案。它有帮助,但并不完全有效。它有助于 Card.io 现在正确触发。但是,它会触发 canScan 函数,但不会触发回调。更奇怪的是,当我将应用程序置于后台并返回它时,回调会以“true”状态触发,这是肯定的。但是为什么它只在应用程序在后台时才会触发。然后当我点击按钮时,什么也没有发生,但是当我将应用程序置于后台时,它再次调出 Card.io 界面。界面再次只在后台工作。想法?
    猜你喜欢
    • 1970-01-01
    • 2017-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多