Bạn có thể viết các trình cắm thêm PhoneGap của riêng mình (về cơ bản là một đoạn mã JavaScript đến Native code). Điều này sẽ cho phép bạn tự do sử dụng bất kỳ giải pháp gốc hiện tại nào có hỗ trợ ngoại tuyến (Webtrends, GA, Flurry, ...).
Xem: http://wiki.phonegap.com/w/page/36752779/PhoneGap%20Plugins
Bạn sẽ phải tạo một tập tin JavaScript và một tập tin Native mỗi nền tảng mà bạn muốn ủng hộ. Trong mã Native của bạn, bạn sẽ thực hiện cuộc gọi đến SDK của nhà cung cấp theo dõi của bạn.
Tôi đã sử dụng ví dụ Android và chỉ cần đặt ví dụ này với nhau làm mẫu. Xin lưu ý rằng điều này đã không được thử nghiệm ở tất cả hoặc thậm chí đưa vào một IDE. Tôi chỉ đơn giản là thay đổi nội dung các ví dụ được cung cấp trong 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());
});
Tôi có 0 mã gốc ngay bây giờ và tôi muốn giữ nó theo cách đó. Tôi chỉ có thể giải quyết bằng cách chỉ thu thập số liệu phân tích trên một tập con của người dùng của tôi hoặc chờ một giải pháp thích hợp sử dụng cơ sở dữ liệu localStorage/local. –
Khi PhoneGap Build hỗ trợ plugin, điều này có thể trở thành một lựa chọn khả thi. –
Tôi nhận được điểm của bạn cố gắng để ở trong JS tinh khiết, một mục tiêu tuyệt vời của nó và may mắn !!! – eSniff