2014年11月19日水曜日

Cordova(PhoneGap)3.6にアップデートして、つまづいたところメモ。

リファレンスが少なすぎて死にそうです。 以下、トラップが仕込まれてるんで、回避の仕方をメモします。

公式のNativeControlsは存在しない

気づけば公式のNativeControlsは存在せず、あるのは
https://github.com/apla/me.apla.cordova.nativecontrols
が3.x系に(一応)対応してくれてます。ただ使い方も書かれてないので、少し追記しておきます。
この書き方でTabを表示できますが、このままではCDVTabBarが壊れているためどの道発火はされません・・。

  nativeControls = window.plugins.nativeControls;
  nativeControls.createTabBar();
  
  // Books tab
  nativeControls.createTabBarItem(
    "books",
    "Books",
    "/www/tabs/book.png",
    {"onSelect": function() {
      books();
    }}
  );
  
  // Stats tab
  nativeControls.createTabBarItem(
    "finished",
    "Finished",
    "/www/tabs/box.png",
    {"onSelect": function() {
      finished();
    }}
  );
  
  // About tab
  nativeControls.createTabBarItem(
    "about",
    "About",
    "/www/tabs/info.png",
    {"onSelect": function() {
      about();
    }}
  );
  
  // Compile the TabBar
  nativeControls.showTabBar();
  nativeControls.showTabBarItems("books", "finished", "about");
  nativeControls.selectTabBarItem("books");


NativeControlsのTabBarは動かない

時間があるときにプルリク予定。

onDeviceReady()の呼ばれるタイミングがおかしい

pluginsが完全に読み込まれる前に、onDeviceReady()が発火されてしまいます。 対処法としては、index.htmlのbodyに
  

  
  
上記のように記載し、強引にonLoadした後の処理を書きます。


Pluginsは読まなくてよい

自動で呼んでくれるため、index.htmlファイルにわざわざ記述する必要がなくなりました。
代わりに、config.xmlとcordova.plistへの記述を忘れずに。


Pluginを入れてからcordova buildすると設定が戻る

Pluginを入れると、ついcordova build iosとか打ちたくなりますが、打ったら最後。設定したconfig.xmlファイルやもろもろはリセットがかかってしまいます。
そのため、Pluginを反映させたい場合には、方法が2つあります。
1.cordova plugins add [プラグイン名]して一発で入れる。
2.うまく入らなかったり、外部のライブラリを入れたい場合には、config.xmlとCordova.plistを手書きする。

のいずれかをする必要があります。


他に使っている人がいたら、リアルでつながりたいくらいCordova過疎ってます。笑
ネイティブの敷居が下がってきているので、ほぼネイティブでみんな対応してますよね・・