2016-12-18 3 views
0

저는 주로 Cordova를 사용하는 하이브리드 응용 프로그램 개발자입니다. iOS 및 Android 용 기본 Garmin SDK를 구현하기 위해 Cordova 플러그인을 만들어야한다고 생각하는 흥미로운 시나리오가 있습니다. available here.Garmin Mobile SDK 용 Cordova 플러그인 만들기

코드바의 플러그인 설명서를 검토하고 예제를 완료했습니다. Link here. 이 문제에 대한 여러 가지 훌륭한 리소스를 검토 한 결과 Instabug'sModus 중 하나를 참조하십시오.

그러나 다른 튜토리얼에 포함 된 Garmin SDK에 일부 구성 요소가없는 이유를 이해하기에 충분한 지식이 부족합니다. 주로 ConnectIQ.bundle.

나는 내가 겪고있는 오류의 원인이 무엇인지 확신 할 수 없다. 필자는 프로젝트에서 개발하려고하는 사용자 정의 플러그인을 통해 ConnectIQ.framework를 구현하는 특정 파일을 찾을 수 없다는 느낌이 들었습니다.

심지어 다른 사람의 구현 비공식 cordova Connect IQ 플러그인 they released last year을 발견했습니다.

2016-12-18 18:35:04.748 appTest[56419:4257397] CDVPlugin class CIQPlugin (pluginName: connectiq) does not exist. 
2016-12-18 18:35:04.748 appTest[56419:4257397] [CDVTimer][connectiq] 0.180006ms 
2016-12-18 18:35:13.942 appTest[56419:4257397] CDVPlugin class CIQPlugin (pluginName: ConnectIQ) does not exist. 
2016-12-18 18:35:13.942 appTest[56419:4257397] ERROR: Plugin 'ConnectIQ' not found, or is not a CDVPlugin. Check your plugin mapping in config.xml. 
2016-12-18 18:35:13.942 app Test[56419:4257397] -[CDVCommandQueue executePending] [Line 142] FAILED pluginJSON = ["INVALID","ConnectIQ","initializeWithUrlScheme",["prefs-123456"]] 

이것은 plugin.xml 파일의 내용을 포함합니다 : 실행시,이 내 오류 로그입니다 이러한 오류 및 내 연구를 바탕으로

<?xml version="1.0" encoding="UTF-8"?> 
<!-- Copyright (c) 2014 PayPal. All rights reserved. --> 
<plugin xmlns="http://apache.org/cordova/ns/plugins/1.0" 
    xmlns:rim="http://www.blackberry.com/ns/widgets" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    id="com.heavydutydev.cordova.ciq" 
    version="0.0.1"> 
    <name>Cordova CIQ</name> 
    <description>This plugin allows basic interactions with the Garmin Connect IQ native interfaces</description> 
    <keywords>garmin, connect-iq, connect iq</keywords> 
    <license>NONE</license> 
    <engines> 
      <engine name="cordova" version="&gt;=5.0.0" /> 
    </engines> 




    <!-- ios --> 
    <platform name="ios"> 
     <js-module src="www/cdv-plugin-connect-iq.js" name="ConnectIQ"> 
     <clobbers target="ConnectIQ" /> 
     </js-module> 
     <config-file target="config.xml" parent="/*"> 
      <feature name="ConnectIQ"> 
       <param name="ios-package" value="CIQPlugin" onload="true" /> 
      </feature> 
     </config-file> 
     <source-file src="src/ios/ConnectIQ.framework" framework="true" /> 
    <!-- <header-file src="src/ios/PayPalMobileCordovaPlugin.h" /> 
     <source-file src="src/ios/PayPalMobileCordovaPlugin.m" /> 

     <header-file src="src/ios/PayPalMobile/PayPalConfiguration.h" /> 
     <header-file src="src/ios/PayPalMobile/PayPalFuturePaymentViewController.h" /> 
     <header-file src="src/ios/PayPalMobile/PayPalMobile.h" /> 
     <header-file src="src/ios/PayPalMobile/PayPalOAuthScopes.h" /> 
     <header-file src="src/ios/PayPalMobile/PayPalPayment.h" /> 
     <header-file src="src/ios/PayPalMobile/PayPalPaymentViewController.h" /> 
     <header-file src="src/ios/PayPalMobile/PayPalProfileSharingViewController.h" /> 

     <source-file src="src/ios/PayPalMobile/libPayPalMobile.a" framework="true" /> 
     <source-file src="src/ios/PayPalMobile/libCardIO.a" framework="true" /> 
     <source-file src="src/ios/PayPalMobile/libopencv_core.a" framework="true" /> 
     <source-file src="src/ios/PayPalMobile/libopencv_imgproc.a" framework="true" /> 


     <framework src="Accelerate.framework" /> 
     <framework src="AudioToolbox.framework" /> 
     <framework src="AVFoundation.framework" /> 
     <framework src="CFNetwork.framework" /> 
     <framework src="CoreGraphics.framework" /> 
     <framework src="CoreLocation.framework" weak="true" /> 
     <framework src="CoreMedia.framework" weak="true" /> 
     <framework src="CoreVideo.framework"/> 
     <framework src="MessageUI.framework" /> 
     <framework src="OpenGLES.framework" /> 
     <framework src="MobileCoreServices.framework" /> 
     <framework src="Security.framework" /> 
     <framework src="SafariServices.framework"/> 
     <framework src="SystemConfiguration.framework" /> 
     <framework src="QuartzCore.framework"/> 
     <framework src="UIKit.framework"/> 


     <framework src="libc++.dylib" /> 
     <framework src="libPayPalMobile.a" /> 
     <framework src="libCardIO.a" /> 
     <framework src="libopencv_core.a" /> 
     <framework src="libopencv_imgproc.a" /> --> 

    </platform> 

    <platform name="android"> 
     <js-module src="www/cdv-plugin-connect-iq.js" name="ConnectIQ"> 
     <clobbers target="ConnectIQ" /> 
     </js-module> 
     <config-file target="res/xml/config.xml" parent="/*"> 
      <feature name="ConnectIQ"> 
       <param name="android-package" value="com.heavydutydev.cordova.ciq.CIQPlugin" /> 
      </feature> 
     </config-file> 

     <source-file src="src/android/com/heavydutydev/cordova/ciq/CIQPlugin.java" target-dir="src/com/heavydutydev/cordova/ciq" /> 
     <source-file src="src/android/com/heavydutydev/cordova/ciq/CIQContext.java" target-dir="src/com/heavydutydev/cordova/ciq" /> 
     <source-file src="src/android/libs/connectiq.jar" target-dir="libs" /> 
<!-- 
     <config-file target="AndroidManifest.xml" parent="/manifest"> 
      <uses-permission android:name="android.permission.CAMERA" /> 
      <uses-permission android:name="android.permission.VIBRATE" /> 

      <uses-feature android:name="android.hardware.camera" android:required="false" /> 
      <uses-feature android:name="android.hardware.camera.autofocus" android:required="false" /> 

      <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 
      <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> 
      <uses-permission android:name="android.permission.INTERNET"/> 
     </config-file> --> 

<!--   <config-file target="AndroidManifest.xml" parent="/manifest/application"> 
      <service android:name="com.paypal.android.sdk.payments.PayPalService" 
      android:exported="false" /> 
      <activity android:name="com.paypal.android.sdk.payments.PaymentActivity" /> 
      <activity android:name="com.paypal.android.sdk.payments.LoginActivity" /> 
      <activity android:name="com.paypal.android.sdk.payments.PaymentMethodActivity" /> 
      <activity android:name="com.paypal.android.sdk.payments.PaymentConfirmActivity" /> 
      <activity android:name="com.paypal.android.sdk.payments.PayPalFuturePaymentActivity" /> 
      <activity android:name="com.paypal.android.sdk.payments.FuturePaymentConsentActivity" /> 
      <activity android:name="com.paypal.android.sdk.payments.FuturePaymentInfoActivity" /> 
      <activity android:name="com.paypal.android.sdk.payments.PayPalProfileSharingActivity" /> 
      <activity android:name="com.paypal.android.sdk.payments.ProfileSharingConsentActivity" /> 
      <activity 
       android:name="io.card.payment.CardIOActivity" 
       android:configChanges="keyboardHidden|orientation" /> 
      <activity android:name="io.card.payment.DataEntryActivity" /> 
     </config-file> --> 

    </platform> 

</plugin> 

, 내가 생각하는 그 plugin.xml에와 config.xml은 구현하려고하는 SDK와 제대로 정렬되지 않습니다. 누구든지 문제 해결 단계를 제공하여 문제에 대해 더 자세히 알게되면 크게 감사하겠습니다.

답변

0

나는 플러그인을 ddteeter에 의해 영감을 내 자신의 플러그인을 시작했습니다.
하지만 Android 운영체제 만 지원합니다.

ConnectIQ Сordova 플러그인을 사용하는 중에 오류가 있다는 것을 알고 있습니다.
그래서 처음부터 다음을 수행 할 것을 권합니다.

1) github에서 ddteeter 플러그인을 다운로드/복제하십시오.
2) 코드바 프로젝트를 만듭니다. Android 플랫폼을 추가하십시오.
3) NPM을 사용하여 plugman 유틸리티를 설치하십시오.
4) 방금 생성 한 프로젝트에 ddteeter 플러그인을 설치하십시오.

call plugman install --platform android --project platforms\android --plugin some\filesystem\path\to\ddteeter\plugin\root\directory 

그런 다음 장치 (또는 필요한 경우 Monkey C 응용 프로그램)에 연결할 수 있습니다.
직접 메시지를 보내더라도 Google Play에서 Garmin Connect 애플리케이션을 설치해야합니다. Android BLE SDK는 작동하지 않습니다.

이 플러그인에는 가치있는 로직이 없습니다. 그러나 페어링 된 장치를 열거하여 모든 기능이 작동하는지 확인할 수 있습니다. 이 플러그인은 JavaScript 코드에서 액세스 할 수있는 'ConnectIQ'글로벌 변수를 제공합니다.

+0

Maxim, 저는 ddteeter의 플러그인에 대한 저의 연구를 기반으로했습니다. 안드로이드와 IOS에서이 기능을 지원하는 방법을 모색 중입니다. 제공된 설명서가 더 이상 유효하지 않아서 ConnectIQ.framework를 부적절하게 구현하고있는 것으로 보입니다. – user2355051