2016-09-24 10 views
1

Cordova用のCard.ioプラグインの実装に問題があります。プラグインをインストールして実装する方法のgithubのページの指示があります。https://github.com/card-io/card.io-Cordova-PluginCordova Card.IOプラグインの実装

私は

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

を行うことで押し込みを追加しましたそして、彼らはgithubのページに追加することを教えてボタンを追加しました。これまでは、私はすべてのことをやっていると確信しています。ここで問題は、アプリでの実際の実装です。私はアプリでUIフレームワークを使用しています。そのため、index.jsファイルはなく、標準のindex.jsのコードと同じように見えません。私はちょうど...

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

私は多少コールバックに精通していますが、私は彼らの例で何が起こっているのか分かりません。 "example: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を使用していない、私は時折jQueryを使って純粋なJavascriptを使用)

答えて

1

あなたは

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

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

を交換する必要がありますあなたが使用していた準備完了イベントは、コードワイヤプラグインではなくDOMの準備完了イベントです。私は、あなたがCardIO.canScan(onCardIOCheck);と呼んだときに、プラグインがロードされていなかったこと、そしてそれがなぜ機能しないのだろうと信じています。

+0

ありがとうございました。私はあなたのソリューションを試しました。それは助けますが、完全には機能しません。 Card.ioが正しく発射されるように助けます。ただし、canScan関数は起動しますが、コールバックは起動しません。もっと奇妙に思えるのは、アプリをバックグラウンドに置いて戻ってくると、コールバックはステータス「true」で起動するということです。これは肯定的です。しかし、アプリがバックグラウンドにあるときにはなぜそれは起動しますか?それから私がボタンをタップすると、何も起こりませんが、私はバックグラウンドでアプリを置くと、再びCard.ioインターフェイスを起動します。インタフェースは、バックグラウンドでしか動作しません。思考? – user1840352

関連する問題