【问题标题】:Clicking on a link inside a webview that will trigger a native iOS screen (with params passed from the webview)单击将触发本机 iOS 屏幕的 web 视图内的链接(使用从 web 视图传递的参数)
【发布时间】:2012-04-04 11:39:33
【问题描述】:

查看 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 对于这个需求目标是不可能的

【问题讨论】:

  • 您能否描述一下您所说的“原生 iOS 屏幕”是什么意思? (我不懂 iOS 编程)在我看来,你想要的东西完全可以用纯 Web 技术完成,Sencha Touch 2 肯定可以。
  • 当然。 Sencha Touch 为 Web 提供了一个 JS 框架,它提供了移动设备的外观和(延迟)感觉。原生应用程序是使用 obj-c (iOS) 创建的应用程序,它的行为更加流畅,还有其他好处。 Phonegap 是一个允许您编写 Web 应用程序的框架,它是为大多数主要移动设备编写的,以允许您使用移动设备的操作系统。它为此目的使用 Webview(本机 iOS 控件)和“本机桥”-nullisnotanobject.com/phonegap-native-bridge我不确定离合器.io 是否是我正在寻找的东西
  • 我非常了解 Sencha Touch 2 和 Phonegap :) 。在使用过它们之后,我必须说 Sencha Touch 2 在 iOS 上的性能非常流畅和出色。您应该在您拥有的任何 iDevices 上尝试一些示例。
  • 是的,我对 Phonegap 的工作原理和本地桥接器等有模糊的了解。只是想知道为什么您觉得它不适合您的需求。

标签: ios html cordova sencha-touch-2 appcelerator


【解决方案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: 中使用拦截调用:

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

【讨论】:

【解决方案2】:

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

例如:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-04
    • 2023-03-19
    • 1970-01-01
    • 2012-02-21
    • 1970-01-01
    • 1970-01-01
    • 2013-06-11
    • 2021-12-24
    相关资源
    最近更新 更多