0

Chrome 的 Ripple 插件模拟了大多数 PhoneGap API,但我使用的是第三方软件,它使用了 PhoneGap.exec() 和 PhoneGap.stringify() 等 API,据我所知,我没有t 在 Ripple 环境中获得这些。

我的解决方法是在初始化的后期将这些方法破解到 PhoneGap 中。这似乎确实有效,但感觉就像一个kluge。

问题:

1)。在 Ripple 中提供此类 API 是否有技巧?

2)。对干净的解决方法有什么建议吗?

4

3 回答 3

1

如果您谈论的是来自 rim 的波纹,我认为波纹仍处于 beta 模式。我以前知道 rim html5 实现有一个配置文件,您可以在其中指定您将从手机使用的服务....也许在同一个配置文件中,您可以指定某些方法,关键是找到那个涟漪实现配置文件并检查该选项是否实际存在...

于 2011-12-15T05:01:11.537 回答
0

查看代码我发现当 PhoneGap 想要调用插件时,波纹会捕获最后一个调用(exec 方法)并用它的一个覆盖本机实现。

这是波纹代码:

var _prompt = ripple('ui/plugins/exec-dialog'),
emulator = {
    "App": ripple('platform/cordova/2.0.0/bridge/app'),
    "Accelerometer": ripple('platform/cordova/2.0.0/bridge/accelerometer'),
    "Battery" : ripple('platform/cordova/2.0.0/bridge/battery'),
    "Compass": ripple('platform/cordova/2.0.0/bridge/compass'),
    "Camera": ripple('platform/cordova/2.0.0/bridge/camera'),
    ...   
};
module.exports = {
    add: function (service, module) {
        emulator[service] = module;
    },
    exec: function (success, fail, service, action, args) {
        try {
            emulator[service][action](success, fail, args);
        }
        catch (e) {
            console.log("missing exec:" + service + "." + action);
            console.log(args);
            console.log(e);
            console.log(e.stack);

        _prompt.show(service, action, success, fail);
        }
    }
};

所以我在使用我的插件之前打了这个电话:

ripple('platform/cordova/2.0.0/bridge').add("ToggleBluetooth", {
                                                                        start: function(){
                                                                            console.log("this is a native method call emulation");
                                                                            return true;
                                                                        },
                                                                        stop: function(){
                                                                            console.log("this is a native method call emulation");
                                                                            return true;
                                                                        }
                                                                    }
                                                                );

通过这种方式,Ripple 知道该做什么而不是抛出异常。

我正在使用波纹 0.9.23

于 2014-09-26T09:55:16.983 回答
0

我可能是非常错误的,但我的理解是该exec函数用于执行本机代码,因此如果可能的话,Ripple 将非常难以实现它。并且stringify似乎已从最新版本的 Cordova 中删除(http://mail-archives.apache.org/mod_mbox/incubator-callback-commits/201201.mbox/%3C20120103185712.5EDCE315778@tyr.zones.apache.org%3E)。

于 2013-09-16T12:13:40.420 回答