Cordova(PhoneGap) + Google Analytics
注意点
Cordova (PhoneGap)も Google Analytics も Admobも仕様変わりまくりで、ドキュメントがぐちゃぐちゃで、エラー出まくりでヒドイ状況。
現状、ググっても古い情報ばかりで、まともな情報でてこない。
2013年以降のドキュメントのみググって、(PhoneGap 1.x系とか)は見ないようにした方がいいと思う。
PhoneGap: cordova-2.6.0 を利用しています。
現在、他の広告をお試し中。(nend)
cordova-plugman をインストールする
プラグインをインストールする用のソフトウェアらしい。
注意: pluginstall なるものはもう存在しない模様。
apache/cordova-plugman · GitHub
https://github.com/apache/cordova-plugman
# npm install -g plugman
使い方
plugman --install --platform <ios|android|blackberry10|wp7|wp8> --project <directory> --plugin <name|url|path> [--plugins_dir <directory>] [--www <directory>] [--variable <name>=<value> [--variable <name>=<value> ...]]
GAPlugin のインストール
phonegap-build/GAPlugin · GitHub
https://github.com/phonegap-build/GAPlugin
上記から、git clone か zipダウンロードする
% plugman --install --platform ios --project [プロジェクトディレクトリ] --plugin /Users/ユーザ名/phonegap/GAPlugin-master
エラー
/usr/local/lib/node_modules/plugman/src/util/plugins.js:28 tmp_dir = path.join(os.tmpdir(), 'plugman-tmp');
node のUPDATE
# npm update -g
v0.8.19 までしかアップデートできない?
node@0.0.0: To update or install node, go to http://nodejs.org/
公式サイトに行けと‥、公式からダウンロードしてnode.jsをインストール
v0.10.7 になっているのでok。
再度実行で以下のようなのが出て、インストール終了。
com.adobe.plugins.GAPlugin installed.
javascript での組み込み
以下、公式ドキュメントのてきとー訳。
このプラグインは、window.plugins.gaPlugin を作る。 onDeviceReadyの後に, ローカルの var を作り、 plugin を始めるべし、以下のように。
var gaPlugin; function onDeviceReady() { gaPlugin = window.plugins.gaPlugin; gaPlugin.init(successHandler, errorHandler, "UA-12345678-1", 10); }
これで動く…はず?
コンパイルに失敗しているので、続く…
コンパイルエラー
以下のようなのが出たら
Warning: no rule to process file '$(PROJECT_DIR)/hoge' /com.adobe.plugins.GAPlugin/libGoogleAnalytics.a' of type archive.ar for architecture
Build Phases の Compile Sources から libGoogleAnalytics.a を Copy Bundle Sources に移動させると良い(らしい)
参考URL
dhilipsiva: Xcode: warning: no rule to process file '$(PROJECT_DIR)/path/to/file' of type for architecture
http://dhilipsiva.blogspot.jp/2012/10/xcode-warning-no-rule-to-process-file.html
Google Analytics SDK コンパイル時にエラーの件
以下のようなエラーが出る。
Undefined symbols for architecture i386: "_NSInMemoryStoreType", referenced from: anon in libGoogleAnalytics.a(GAIDataStore.o) "_NSSQLiteErrorDomain", referenced from: anon in libGoogleAnalytics.a(GAIDataStore.o) anon in libGoogleAnalytics.a(GAIDataStore.o) anon in libGoogleAnalytics.a(GAIDataStore.o) anon in libGoogleAnalytics.a(GAIDataStore.o) anon in libGoogleAnalytics.a(GAIDataStore.o) anon in libGoogleAnalytics.a(GAIDataStore.o) anon in libGoogleAnalytics.a(GAIDataStore.o) ... "_NSSQLiteStoreType", referenced from: anon in libGoogleAnalytics.a(GAIDataStore.o) "_OBJC_CLASS_$_NSAttributeDescription", referenced from: objc-class-ref in libGoogleAnalytics.a(GAICoreDataUtil.o) "_OBJC_CLASS_$_NSEntityDescription", referenced from: objc-class-ref in libGoogleAnalytics.a(GAIHit.o) objc-class-ref in libGoogleAnalytics.a(GAIProperty.o) "_OBJC_CLASS_$_NSFetchRequest", referenced from: objc-class-ref in libGoogleAnalytics.a(GAIDataStore.o) "_OBJC_CLASS_$_NSManagedObject", referenced from: _OBJC_CLASS_$_GAIHit in libGoogleAnalytics.a(GAIHit.o) _OBJC_CLASS_$_GAIProperty in libGoogleAnalytics.a(GAIProperty.o) "_OBJC_CLASS_$_NSManagedObjectContext", referenced from: objc-class-ref in libGoogleAnalytics.a(GAIDataStore.o) "_OBJC_CLASS_$_NSManagedObjectModel", referenced from: objc-class-ref in libGoogleAnalytics.a(GAIDataStore.o) "_OBJC_CLASS_$_NSPersistentStoreCoordinator", referenced from: objc-class-ref in libGoogleAnalytics.a(GAIDataStore.o) "_OBJC_METACLASS_$_NSManagedObject", referenced from: _OBJC_METACLASS_$_GAIHit in libGoogleAnalytics.a(GAIHit.o) _OBJC_METACLASS_$_GAIProperty in libGoogleAnalytics.a(GAIProperty.o) ld: symbol(s) not found for architecture i386 clang: error: linker command failed with exit code 1 (use -v to see invocation)
以下で解決した。
沢山の対処方法があるが、僕は (Google Analytics SDK 2.0 beta 4) を使っているので、
- CoreData.framework を追加
で解決
- libGoogleAnalytics.a が Link Binary With Libraries で赤くなっていたので、 + をクリックした後、 Other Add みたいので、追加したのも必要かも。
Google Analytics Library IOS - Stack Overflow
http://stackoverflow.com/questions/13119578/google-analytics-library-ios
GAPlugin.js が読み込まれない件
以下の行が全く読み込まれないので、なんでかなと思っていたら…
gaPlugin = window.plugins.gaPlugin;
以下のページに答えが。
javascript - alternative to cordova.addConstructor? - Stack Overflow
http://stackoverflow.com/questions/16082637/alternative-to-cordova-addconstructor
cordova.addConstructor(function () {
って書式はなくなって、以下の形でOKらしい。
if (!window.plugins) { window.plugins = {}; } window.plugins.pushNotification = new PushNotification();
本来なら、以下の形でプラグインをラップした方がいいとも言っている。
Defining Your Cordova Plugin As A Cordova Module · phonegap/phonegap-plugins Wiki · GitHub
https://github.com/phonegap/phonegap-plugins/wiki/Defining-Your-Cordova-Plugin-As-A-Cordova-Module
現状
- 動いてない
- javascript は、マニュアル通りに設定しているが、動いていない様子
navigator.notification.confirm で confirm メソッドがないとか。 deviceReadyの後にやれとかググると書いてあるが、やっても動かず…
- 時間の無駄過ぎるので、現状放置。
アンインストール方法
GAPlugin がまともに動ごく気がしないので、アンインストール。
# plugman --uninstall --platform ios --project ./[アプリ名] --plugin com.adobe.plugins.GAPlugin --plugin_dir /Users/[ユーザ名]/phonegap/[アプリ名]/cordova/plugins/ com.adobe.plugins.GAPlugin uninstalled.
現状の結論
- 時間が無駄にかかる
- ドキュメント正しくない
- 検索しても古い情報か、間違っている情報が多く、問題を解決するための情報なし
現在、以下をお試し中。
jelled/google-analytics-cordova-ios · GitHub
https://github.com/jelled/google-analytics-cordova-ios