使用Phonegap iOS实现 card.io SDK的正确方法



我想将卡片扫描器从 card.io SDK实现到iOS版Phonegap中。我正在使用Phonegap v2.9.0,并经历了这个 https://github.com/card-io/card.io-iOS-SDK-PhoneGap

我知道它是一个插件,但我以前没有在Phonegap中创建或实现过插件。上面链接中提供的代码对我不起作用。我不知道为什么,可能是我在设置步骤中做错了什么。

我想要澄清一下。以下是 gitHub 中给出的步骤

1)添加CardIOPGPlugin。[h|m] 到您的项目(插件组)。

2)将CardIOPGPlugin.js复制到项目的www文件夹中。(如果还没有 www 文件夹,请在模拟器中运行并按照生成警告中的说明进行操作。

3) 添加例如 到您的 html。请参阅CardIOPGPlugin.js以获取详细的使用信息。

4) 将以下内容添加到 配置.xml,适用于 PhoneGap 版本 3.0+:

<feature name="CardIOPGPlugin"><param name="ios-package" value="CardIOPGPlugin" /></feature>

我的疑问:

他们在哪个文件夹(1)中谈论?Xcode 中的插件文件夹?或者项目目录中的插件文件夹(具有 config.xml 的目录)。我已经尝试了这两种方法,但示例代码没有调用onCardIOCheck。

适用于 card.io SDK 的 gitHub 提供了初始设置步骤。(https://github.com/card-io/card.io-iOS-SDK)

在那里,在第2步中,他们说"将CardIO目录(包含多个.h文件和libCardIO.a)添加到Xcode项目中。我该怎么做?将文件夹复制到何处?

我还完成了第 3 步和第 4 步,它们是

3) 在项目的"生成设置"中,将 -lc++ 添加到"其他链接器标志"。

4) 将这些框架添加到您的项目中。支持将 iOS 版本强链接回 5.0。(框架列表..)

我已经完成了所有工作,我的onDeviceReady可以工作,但是window.plugins.card_io.canScan(onCardIOCheck);没有调用。

请..任何以前在PhoneGap和iOS中这样做过的人,请提供详细的解释和步骤,以便在Phonegap iOS中实现这一点。

提供我的代码:(出于问题考虑而更改了应用程序 ID)

document.addEventListener("deviceready",onDeviceReady, false);
 function onDeviceReady() {
  alert('device ready');
   var cardIOResponseFields = [
                                        "card_type",
                                        "redacted_card_number",
                                        "card_number",
                                        "expiry_month",
                                        "expiry_year",
                                        "cvv",
                                        "zip"
                                        ];
            var onCardIOComplete = function(response) {
                alert("card.io scan complete");
                for (var i = 0, len = cardIOResponseFields.length; i < len; i++) {
                    var field = cardIOResponseFields[i];
                    console.log(field + ": " + response[field]);
                }
            };
            var onCardIOCancel = function() {
                alert("card.io scan cancelled");
            };
            var onCardIOCheck = function (canScan) {
                alert("card.io canScan? " + canScan);
                var scanBtn = document.getElementById("scanBtn");
                if (!canScan) {
                    scanBtn.innerHTML = "Manual entry";
                }
                scanBtn.onclick = function (e) {
                    window.plugins.card_io.scan(
                                                "MYAPPIDCHANGEDFORQUESTION",
                                                {
                                                "collect_expiry": true,
                                                "collect_cvv": false,
                                                "collect_zip": false,
                                                "shows_first_use_alert": true,
                                                "disable_manual_entry_buttons": false
                                                },
                                                onCardIOComplete,
                                                onCardIOCancel
                                                );
                }
            };
            window.plugins.card_io.canScan(onCardIOCheck);
        }

他们在哪个文件夹(1)中谈论?Xcode 中的插件文件夹?或者项目目录中的插件文件夹(具有 config.xml 的目录)。我已经尝试了这两种方法,但示例代码没有调用onCardIOCheck。

Plugins文件夹是相同的,Xcode 项目只是引用该文件夹,当您复制文件(取决于您喜欢如何组织它们)时,您通常会选择 copy,因此它们将放置在 plugins 文件夹中,只要文件编译到项目中就无关紧要。

在那里,在第2步中,他们说"将CardIO目录(包含多个.h文件和libCardIO.a)添加到Xcode项目中。我该怎么做?将文件夹复制到何处?

文件复制到何处并不重要,只要它们包含在 Xcode 项目中并进行编译即可。

我已经完成了所有工作,我的onDeviceReady可以工作,但是window.plugins.card_io.canScan(onCardIOCheck);没有调用。

确保CardIOPGPlugin.js在使用它的javascript文件之前加载,它可能未定义,因此失败。

希望对您有所帮助。

最新更新