Puede escribir sus propios complementos de PhoneGap (básicamente, un JavaScript para el puente de código nativo). Esto le daría la libertad de usar cualquiera de las soluciones nativas actuales que tienen soporte fuera de línea (Webtrends, GA, Flurry, ...).
Ver: http://wiki.phonegap.com/w/page/36752779/PhoneGap%20Plugins
Usted tendría que crear un archivo JavaScript y un archivo nativo por plataforma que quería apoyar. En su código nativo, haría una llamada al SDK de su proveedor de seguimiento.
Utilicé el ejemplo de Android y simplemente puse este ejemplo como muestra. Tenga en cuenta que esto no fue probado en absoluto o incluso puesto en un IDE. Simplemente editado los ejemplos proporcionados en Notepad ++ :-)
// Java
public class TrackingPlugin extends Plugin {
public static final String ACTION="pageView";
@Override
public PluginResult execute(String action, JSONArray data, String callbackId) {
Log.d("Tracking", "Plugin Called");
PluginResult result = null;
if (ACTION.equals(action)) {
try {
String pageTitle= data.getString(0);
JSONObject res = new JSONObject();
SOME_TRACKING_API.Track(pageTitle);
res.put("status","OK");
result = new PluginResult(Status.OK, res);
} catch (JSONException jsonEx) {
Log.d("DirectoryListPlugin", "Got JSON Exception "+ jsonEx.getMessage());
result = new PluginResult(Status.JSON_EXCEPTION);
}
} else {
result = new PluginResult(Status.INVALID_ACTION);
Log.d("TrackingPlugin", "Invalid action : "+action+" passed");
}
return result;
}
// JavaScript
/**
* @return Object literal singleton instance of Track
*/
var Track = function() {
};
/**
* @param pageTitle The title for a new view
* @param successCallback The callback which will be called when track call is done
* @param failureCallback The callback which will be called when track call is done
*/
Track.prototype.pageView = function(pageTitle,successCallback, failureCallback) {
return PhoneGap.exec(
successCallback, //Success callback from the plugin
failureCallback, //Error callback from the plugin
'TrackingPlugin', //Tell PhoneGap to run "TrackingPlugin" Plugin
'pageView', //Tell plugin, which action we want to perform
[pageTitle]); //Passing list of args to the plugin
};
PhoneGap.addConstructor(function() {
PhoneGap.addPlugin("Track", new Track());
});
Tengo 0 código nativo en este momento, y quiero guardarlo de esa manera. Tal vez solo me conformo con recopilar análisis en un subconjunto de mis usuarios, o espero una solución adecuada que utilice localStorage/bases de datos locales. –
Cuando PhoneGap Build admite complementos, esto puede convertirse en una opción viable. –
Consigo tu punto de tratar de permanecer en JS puro, ¡es un gran objetivo y buena suerte! – eSniff