2016-06-29 13 views
0

私はアプリにプラグインを読み込むためにコードバを使用しています。ここでは単純化し再生可能な問題である:Apache Cordovaで私のプラグインが動作しないのはなぜですか?

コルドバはプラグイン追加pluginname コルドバプラットフォーム--saveアンドロイド--save コルドバが構築追加コルドバのfoo を作成するアンドロイド--verbose

私はPhoneGapのを使用して、このアプリを実行して見ることができますそれは私の電話で。基本的なスターターアプリが想定しているように、アプリはdevicereadyを報告します。これまでのところ、すごくいいですね。

私がプラグインフォルダを見ると、そこに自分のプラグインが見えます。この場合、私のプラグインはbluetoothleと呼ばれています。

私はdevicereadyが発生した後に起動する場所でindex.jsファイルを編集し、 "alert(typeof(bluetoothle));"を追加します。

警告が発生すると、「オブジェクト」が報告されるはずです。それはこれをしません。それは "未定義"と報告します。

私はこれを他のいくつかのプラグインで試してみましたが、私はいつも同じ結果を得ています。だから、どのプラグインをインストールしても、プラグイン内のどの機能にもアクセスできないように見えます。

答えて

0

私は同じ問題があります。しかし、私はPhonegap CLIを使用しています。そして、次のプラグイン:https://github.com/randdusing/cordova-plugin-bluetoothle

私はコマンドを使用してプラグインを追加します。

$ phonegap plugin add cordova-plugin-bluetoothle

私は、プラットフォームのAndroidとiOSを追加しました。

したがって、pluginsフォルダには、おそらく有効なプラグインパケットであるcordova-plugin-bluetoothのフォルダがあります。 はまた、プラグインでセクションを含むandroid.jsonとios.jsonファイルがあるフォルダ:プラットフォームで

{ 
    "xml": "<feature name=\"BluetoothLePlugin\"><param name=\"android-package\" value=\"com.randdusing.bluetoothle.BluetoothLePlugin\" /></feature>", 
    "count": 1 
}, 

を:

"cordova-plugin-bluetoothle": { 
    "PACKAGE_NAME": "com.phonegap.helloworld" 
}, 

plaforms /アンドロイドに含むandroid.jsonファイルがあります/含むios.jsonファイルがあるIOS:

{ 
    "xml": "<feature name=\"BluetoothLePlugin\"><param name=\"ios-package\" value=\"BluetoothLePlugin\" /></feature>", 
    "count": 1 
}, 

READMEが伝えとして、私は、Android SDKのAPI 23を目標としました...

私は、devicereadyイベントが発生した後にbluetoothleを初期化するようにhello-worldの例を変更しました。

bluetoothle変数がindex.jsコードで定義されていないため、デバイスの準備ができていますか?

だからここindex.jsの完全なコード:

var bluetoothle; 

var app = { 
    // Application Constructor 
    initialize: function() { 
     this.bindEvents(); 
    }, 
    // Bind Event Listeners 
    // 
    // Bind any events that are required on startup. Common events are: 
    // 'load', 'deviceready', 'offline', and 'online'. 
    bindEvents: function() { 
     document.addEventListener('deviceready', this.onDeviceReady, false); 
    }, 
    // deviceready Event Handler 
    // 
    // The scope of 'this' is the event. In order to call the 'receivedEvent' 
    // function, we must explicitly call 'app.receivedEvent(...);' 
    onDeviceReady: function() { 
     app.receivedEvent('deviceready'); 
     console.log("platform: " + device.platform); 

     if(bluetoothle) { 
      console.log("bluetooth is not defined!");  
     } else { 
      console.log("bluetooth is not defined!");  
     } 

     console.log("yhea managed to initialize Bluetooth LE!"); 
    }, 
    // Update DOM on a Received Event 
    receivedEvent: function(id) { 
     var parentElement = document.getElementById(id); 
     var listeningElement = parentElement.querySelector('.listening'); 
     var receivedElement = parentElement.querySelector('.received'); 

     listeningElement.setAttribute('style', 'display:none;'); 
     receivedElement.setAttribute('style', 'display:block;'); 

     console.log('Received Event: ' + id); 
    } 
}; 

とインデックスの完全なコード。HTML:

<html> 

<head> 
    <meta charset="utf-8" /> 
    <meta name="format-detection" content="telephone=no" /> 
    <meta name="msapplication-tap-highlight" content="no" /> 
    <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width" /> 
    <!-- This is a wide open CSP declaration. To lock this down for production, see below. --> 
    <meta http-equiv="Content-Security-Policy" content="default-src * 'unsafe-inline'; style-src 'self' 'unsafe-inline'; media-src *" /> 
    <!-- Good default declaration: 
    * gap: is required only on iOS (when using UIWebView) and is needed for JS->native communication 
    * https://ssl.gstatic.com is required only on Android and is needed for TalkBack to function properly 
    * Disables use of eval() and inline scripts in order to mitigate risk of XSS vulnerabilities. To change this: 
     * Enable inline JS: add 'unsafe-inline' to default-src 
     * Enable eval(): add 'unsafe-eval' to default-src 
    * Create your own at http://cspisawesome.com 
    --> 
    <!-- <meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: 'unsafe-inline' https://ssl.gstatic.com; style-src 'self' 'unsafe-inline'; media-src *" /> --> 

    <link rel="stylesheet" type="text/css" href="css/index.css" /> 
    <title>Hello World</title> 
</head> 

<body> 
    <div class="app"> 
     <h1>PhoneGap</h1> 
     <div id="deviceready" class="blink"> 
      <p class="event listening">Connecting to Device</p> 
      <p class="event received">Device is Ready</p> 
     </div> 
    </div> 
    <script type="text/javascript" src="cordova.js"></script> 
    <script type="text/javascript" src="js/index.js"></script> 
    <script type="text/javascript"> 
     app.initialize(); 
    </script> 
</body> 

</html> 
0

すっごく、

私はちょうど私のBluetooth低エネルギーのもののためのさまざまなプラグインを使用することにより、「回避」の前に私が持っていた問題。

後で別のプラグインで同じ問題が発生しました。

そして、私は最終的にそれはすべて理にかなっている絵だ:

私は主にオンザフライでテストするPhoneGapの開発アプリケーションを使用していたが。 Phonegap Developer Appには、すべてのCore Pluginsなどが付属しています。

!!すでにバンドルされていないプラグインは、Phonegapデベロッパーアプリケーションではテストできません。

phonegap plugin add cordova-plugin-new-unbundled 

このアプリケーションでは使用できません。潜在的な実際のビルドのためにファイルをダウンロードし、事前ビルドするだけです。

Phonegapデベロッパーアプリケーションでこれを動作させるには、必要なプラグインを追加する独自のPhonegapデベロッパーアプリケーションを構築する必要があります。

あなたのプラグインは、実際のビルドでのみ利用できます。

関連する問題