open:cordova-플러그인-개발

Cordova 플러그인 개발 준비

[app]/platforms/android/res/xml/config.xml에서 feature 태그를 확인할 수 있다.

snippet.xml
    <feature name="AdMob">
        <param name="android-package" value="com.rjfun.cordova.admob.AdMobPlugin" />
        <param name="onload" value="true" />
    </feature>
    <feature name="Device">
        <param name="android-package" value="org.apache.cordova.device.Device" />
    </feature>
    <feature name="InAppBrowser">
        <param name="android-package" value="org.apache.cordova.inappbrowser.InAppBrowser" />
    </feature>
    <feature name="SplashScreen">
        <param name="android-package" value="org.apache.cordova.splashscreen.SplashScreen" />
        <param name="onload" value="true" />
    </feature>
    <feature name="StatusBar">
        <param name="android-package" value="org.apache.cordova.statusbar.StatusBar" />
        <param name="onload" value="true" />
    </feature>
    <feature name="VideoPlayerPlugin">
        <param name="android-package" value="jp.phi.cordova.plugin.videoplayer.VideoPlayerPlugin" />
    </feature>
    <feature name="Whitelist">
        <param name="android-package" value="org.apache.cordova.whitelist.WhitelistPlugin" />
        <param name="onload" value="true" />
    </feature>
    <feature name="Keyboard">
        <param name="android-package" value="io.ionic.keyboard.IonicKeyboard" />
        <param name="onload" value="true" />
    </feature>

각각의 소스는 [app]/plugins 밑에서 확인 할 수 있다.

cordova-plugin-admobpro 플러그인으로 사용중인 AdMob.createBanner(bannerId) 함수를 예로 들어 따라가 본다.

AdMob은 plugins/cordova-plugin-admobpro/plugin.xml js-module로 정의되어 있다.

snippet.xml
<js-module src="www/AdMob.js" name="AdMob">
    <clobbers target="window.AdMob" />
</js-module>

src 로 되어 있는 “www/AdMob.js”를 따라가 본다. 이곳에 createBanner 함수가 있다.

snippet.js
admobExport.createBanner = function(args, successCallback, failureCallback) {
  var options = {};
  if(typeof args === 'object') {
    for(var k in args) {
      if(k === 'success') { if(typeof args[k] === 'function') successCallback = args[k]; }
      else if(k === 'error') { if(typeof args[k] === 'function') failureCallback = args[k]; }
      else {
        options[k] = args[k];
      }
    }
  } else if(typeof args === 'string') {
    options = { adId: args };
  }
  cordova.exec( successCallback, failureCallback, 'AdMob', 'createBanner', [ options ] );
};

createBanner 에서 bannerId 하나만 파라미터로 전달된다.

exec 함수에 대한 정의는 이곳에서 확인할 수 있다.

snippet.java
exec(<successFunction>, <failFunction>, <service>, <action>, [<args>]);

service 는 'AdMob'이고, action 은 'createBanner' 이다.

바라보고 있는 AdMobPlugin 클래스는 GenericAdPlugin 클래스를 상속받은 것이다.

GenericAdPlugin 클래스는 [app]/plugins/cordova-plugin-extension/src/android/cordova-generic-ad.jar 에 있다.

http://www.javadecompilers.com/ 에서 해당 jar 파일을 올리고 jadx decompiler로 선택하면 GenericAdPlugin.java 파일을 확인 할 수 있다.

이 곳에서 createBanner 함수를 확인할 수 있다.

snippet.java
    public boolean createBanner(String adId, boolean autoShow) {
        if (!this.adlicInited) {
            adlic();
        }
        Log.d(LOGTAG, "createBanner: " + adId + ", " + autoShow);
        this.autoShowBanner = autoShow;
        if (adId == null || adId.length() <= 0) {
            adId = this.bannerId;
        } else {
            this.bannerId = adId;
        }
        if (this.testTraffic) {
            if (this.adlicBannerId.length() > 0) {
                adId = this.adlicBannerId;
            } else {
                adId = __getTestBannerId();
            }
        }
        getActivity().runOnUiThread(new C00023(adId));
        return true;
    }

  • open/cordova-플러그인-개발.txt
  • 마지막으로 수정됨: 2020/06/02 09:25
  • 저자 127.0.0.1