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

时间:2013-10-28 08:25:30

标签: ios cordova card.io

我想将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)将以下内容添加到config.xml,适用于PhoneGap 3.0 +版:

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

我的怀疑:

他们在(1)中谈论了哪个文件夹? Xcode中的插件文件夹?或Project目录中的Plugins文件夹(具有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)在项目的Build Settings中,将-lc ++添加到Other Linker Flags。

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

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

请...之前在PhoneGap和iOS中完成此操作的任何人,请在Phonegap iOS中提供详细解释和步骤。

提供我的代码:( app 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 个答案:

答案 0 :(得分:1)

  

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

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

  

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

只要文件包含在Xcode项目中并进行编译,复制文件的位置无关紧要。

  

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

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

希望它有所帮助。