![](/img/trans.png)
[英]is it possible and interaction between native browser and android application?
[英]Is it possible to launch remote file in native application without manual interaction
我们可以通过SMB协议访问远程文件
Finder 菜单 > 前往 > 连接到服务器。
例如:smb:///cifsshare/master.tif”
但是当我们推送命令时,我们最终只会打开封闭目录而不是 tif 文件。 现在,如果我需要打开 master.tif 文件,我需要双击并打开它。 但是对于连接,我输入了文件的地址。
我正在尝试使用safari 扩展实现相同的功能。
NSWorkspace。
if let url = URL(string: path) {
if NSWorkspace.shared.open(url) {
print("Url is opened")
}
}
结果:相同:(
尝试使用 Process() 时
//1
let toolPath = "/usr/bin/open"
let arguments = [pathUrl.absoluteString]
//2
let task = Process()
task.launchPath = toolPath
task.arguments = arguments
task.launch()
task.waitUntilExit()
结果:不工作:(
在 macos 中甚至有可能吗? 任何如何实现这一目标的线索,都受到高度赞赏。
您可以分两步执行此操作:
我找不到以可预测的方式做 #1 的方法。 即,如果某些内容已经安装在/Volumes/cifsshare
,那么打开smb:///cifsshare
会自动将它安装到一个新文件夹( /Volumes/cifsshare (1)
,如果我/Volumes/cifsshare (1)
话),而不会给你反馈它到底在哪里结束。
乍一看,Finder 用于挂载 SMB 的 API 似乎位于私有框架中,因此没有像SMB.mount(smbURL, to: mountPoint)
这样的简单易用的 API。
您可以尝试使用 Process API 来调用mount_smbfs
(它只是mount -t smbfs
的包装器)。 您可以使用它将 SMB 共享挂载到您自己选择的挂载点,例如/Volumes/MyAppSMBShare
或其他任何内容。
从那里,您可以正常打开文件:
NSWorkspace.shared.open(URL(fileURLFromPath: "/Volumes/MyAppSMBShare/master.tif))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.