如何从 Web 脚本调用本地外围设备

Posted

技术标签:

【中文标题】如何从 Web 脚本调用本地外围设备【英文标题】:How to invoke local peripheral device from web script 【发布时间】:2011-09-22 10:05:53 【问题描述】:

我对从网站调用本地应用程序感到困惑。 有没有办法从网络脚本启动 ipad/iphone 应用程序?我记得有带有 IE 的 ActiveX 可以启动本地设备,例如相机或打印机。 javascript 可以调用 ActiveX。但是ios中没有activeX。这是我的问题:如何从网页启动本地设备?有没有人有同样的问题?我有一种方法,但不知道是否可行:

    UIWebView 可以通过 stringByEvaluatingJavaScriptFromString 执行 JavaScript。 用JavaScript在页面中编写一个函数,响应页面上的事件(按钮点击等),然后改变状态。 启动线程查询状态。当状态改变时,调用本地应用。

这是可能的还是更好的方法?

【问题讨论】:

【参考方案1】:

如果您希望通过 iPad 从 Safari 浏览器打开您的应用程序,那么有一种方法可以做到这一点。在应用的 info.plist 文件中添加以下标签:

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLName</key>
        <string>com.companyname.appname</string>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>openApp</string>
        </array>
    </dict>
</array>

保存 plist 文件,当用户单击所需按钮时,现在在网页上放置 openApp:// 代替链接。如果您尝试在自己的应用程序中的 Web 视图中实现它,这将无济于事。但它适用于 iPad 或任何其他应用程序的 Safari 浏览器。

我希望这会有所帮助。

【讨论】:

谢谢,它确实有效。但是,我仍然想在 UIWebView 中实现这一点。有什么办法吗? 是的,您也可以从 Web 视图中执行此操作。但是您不能从 App A 的 webview 调用 App A,因为这没有任何意义。您将只能从 App A 的 webview 调用另一个应用程序。因此,最好将网络链接从您的应用重定向到 safari,然后使用上述方法再次返回您的应用。

以上是关于如何从 Web 脚本调用本地外围设备的主要内容,如果未能解决你的问题,请参考以下文章

Web系统中如何操作外部设备,比如POS机、IC卡读卡器等 - PHP进阶讨论

如何将图像从本地同步到 Web 服务器?所以我可以在设备上看到它们

如何从 Android 移动应用程序调用本地 Web 服务

如何从 python 脚本调用 pip 并使其在本地安装到该脚本? [复制]

如何最好地从浏览器与外围设备交互

c#的webbrowser调用本地javascript脚本?