1

我想将 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。有关详细使用信息,请参阅 CardIOGPlugin.js。

4) 将以下内容添加到 config.xml,对于 PhoneGap 版本 3.0+:

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

我的疑惑:

他们在(1)中谈论的是哪个文件夹?Xcode中的插件文件夹?或 Project 目录(包含 config.xml 的目录)中的 Plugins 文件夹。我都试过了,但是示例代码没有调用 onCardIOCheck。

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

在那里,在第 2 步中,他们说“将 CardIO 目录(包含几个 .h 文件和 libCardIO.a)添加到您的 Xcode 项目中。” 我该怎么做呢?文件夹复制到哪里?

而且我还完成了第 3 步和第 4 步

3) 在项目的 Build Settings 中,将 -lc++ 添加到 Other Linker Flags。

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

我已经完成了所有工作,我的 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);
        }
4

1 回答 1

1

他们在(1)中谈论的是哪个文件夹?Xcode中的插件文件夹?或 Project 目录(包含 config.xml 的目录)中的 Plugins 文件夹。我都试过了,但是示例代码没有调用 onCardIOCheck。

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

在那里,在第 2 步中,他们说“将 CardIO 目录(包含几个 .h 文件和 libCardIO.a)添加到您的 Xcode 项目中。” 我该怎么做呢?文件夹复制到哪里?

只要将文件包含在 Xcode 项目中并进行编译,复制文件的位置并不重要。

我已经完成了所有工作,我的 onDeviceReady 有效,但是 window.plugins.card_io.canScan(onCardIOCheck); 没有打电话。

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

希望能帮助到你。

于 2013-10-28T17:55:31.467 回答