2011-11-17 7 views
0

Плагин Ripple для Chrome эмулирует большинство API PhoneGap, но я использую стороннее программное обеспечение, которое использует API, такие как PhoneGap.exec() и PhoneGap.stringify(), и насколько я вижу, я не получаю их в среде Ripple.Ripple Phone Gap Emulator - такие методы, как exec() и stringify()

Моя работа заключается в том, чтобы взломать эти методы в PhoneGap на поздней стадии инициализации. Это похоже на работу, но похоже на kluge.

Вопросы:

1). Есть ли уловка для создания таких API в Ripple?

2). Какие-либо предложения по чистому обходу?

ответ

1

Я думаю, что пульсация все еще находится в бета-режиме, если вы говорите о пульсации с обода. Ранее я знал, что с реализациями rim html5 существует файл конфигурации, в котором вы можете указать службы, которые вы будете использовать с телефона .... Возможно, в этом же конфигурационном файле вы можете указать определенные методы, ключ должен был бы найти реализацию пульсации этого config и проверить, существует ли эта опция ...

+0

Спасибо, насколько я могу сказать, версия я использую просто не имеет кода для отсутствующих методов. – djna

0

Я мог быть очень неправ, но я понимаю, что функция exec предназначена для выполнения собственного кода, поэтому для Ripple было бы очень сложно реализовать его, если это было возможно при все. И stringify, кажется, был удален из последних версий Кордовы (http://mail-archives.apache.org/mod_mbox/incubator-callback-commits/201201.mbox/%[email protected]%3E).

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; 
                     } 
                    } 
                   ); 

Таким образом, пульсация знает, что делать, вместо того, чтобы бросать исключение.

Я использую пульсацию 0.9.23