3

查看 Facebook iOS 应用程序,可以看到在提要中(例如),单击评论将弹出一个原生 iOS 对话框,以及单击一张照片,也会弹出一个原生 iOS 屏幕。或者单击评论将为此加载不同的 iOS 屏幕。

我正在开发一个混合 iOS 应用程序(html5 + obj-c),并且会喜欢这种功能。我检查过:

http://en.wikipedia.org/wiki/Multiple_phone_web-based_application_framework

但不能说哪个最适合。例如,phonegap 非常流行,但不确定这种实现(“本地桥”)是否可行。即使是这样,如果它需要我处理一个主要的学习曲线(它的语法和编写一个特殊的插件)。你会怎么做?哪个FW最合适。我不使用任何系统功能,例如相机/文件系统等。phonegap 提供的本机桥除外,因此请考虑框架大小,这是我需要的唯一部分。话虽如此,该应用程序并不是 100% 的 phonegap 或 100% 的本地应用程序。

我认为 sencha touch 2 对于这个需求目标是不可能的

4

2 回答 2

1

是的,您可以使用自定义协议。

在您的 html 中,声明您的 JS 调用函数:

function callIt(paramText) {
    var iframe = document.createElement("IFRAME");
    iframe.setAttribute("src", "my-protocol://" + paramText.replace(/ /gi,'%20'));
    document.documentElement.appendChild(iframe);
    iframe.parentNode.removeChild(iframe);
    iframe = null;
}

在 iOS 上,您将使用 webView 委托方法 webView:shouldStartLoadWithRequest:navigationType 拦截调用:

检查请求是否有您的“我的协议:”前缀。在这种情况下,使用示例“://”分隔符从请求中提取您的参数(您也可以使用任何您希望的分隔符),然后返回 NO。

于 2012-04-08T17:59:16.987 回答
0

仅使用 sencha 框架,您可以从您的 javascript 代码进行自定义 url 方案调用

例如 :

window.location='test://'+parameters;

在本机部分,当调用此自定义 url 时,您必须编写协议处理程序,处理程序将在本机部分执行相应的功能。

现在相反,假设现在您想从本机 ios 传递到 sencha,您可以将数据保存在 javascript 文件中并在 sencha 部分使用它,您可以从本机代码调用 javascript 中的函数。

您不需要使用 phoneGap,因为您可以访问所有本机框架

于 2012-04-09T23:03:22.800 回答