我想将 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);
}