我们有一个基于网络的jquery移动应用程序,用于记录用户的活动。这个应用程序目前使用时间很长,因此重新编写应用程序不是一个不幸的选择。
问题是我们正在尝试使用应用程序在某些点获取GPS位置..但是因为它在chrome的实例中运行,所以当手机是javascript时,javascript将无法正确记录锁定,或铬最小化。
因此,为了解决这个问题,我们正在使用Cordova编写Ionic App,以便在后台获取GPS坐标,无论浏览器的状态如何。
目前,这很有效。然而,问题是我们的javascript中存在某些事件需要与我们的GPS日志记录关联的特定“类型”。
我的问题是:如何从GPS背景离子/ cordova应用程序中实际挂接到CHROME中的这个javascript事件。
到目前为止我们尝试了什么:
通过Ionic / Cordova查找chrome localstorage并从计时器中读取该值。 这个问题是我们找不到localstorage / cache的位置。 从这个问题来看,它在这里说:
/data/data/com.android.chrome/cache
但我们无法从Android上的离子应用程序或文件浏览器中找到/访问它 https://android.stackexchange.com/questions/85998/android-google-chrome-browser-cache-location
长篇大论道歉......很难解释。如果您对从Chrome到Ionic / Cordova的这种跨应用事件的替代方法有任何建议,我将非常有兴趣听取您的意见。
答案 0 :(得分:0)
为了解决这个问题,我创建了一个'堆栈'我可以将一个对象推送到一个数组,该数组将由cordova应用程序使用executeScript
获取,如下所示:
在inappbrowser网站:
var stackName = stackN1
function addEventToStack(numid, type) {
var stackRow = { 'numb': numid, 'type': type};
var stack = localGet(stackName); //localstorage
if (!stack)
stack = StackInit();
stack.push(stackRow);
localStore(stackName, stack);
console.log('Added to stack ', stack);
return 'Row Added';
}
在cordova申请中:
ref.executeScript(
{
code: 'localStorage.getItem("stackN1")'
},
function(rdObj) {
//Iterate and use rdObj here
}