我决定制作自己的 FB 聊天应用程序,只显示https://messenger.com https://messenger.com on a WebView
在尝试其他“免费增值”应用程序后。
My ViewController.swift
只需几行代码即可在 Web 视图上加载 URL
import Cocoa
import WebKit
class ViewController: NSViewController {
@IBOutlet weak var webView: WebView!
override func viewDidLoad() {
super.viewDidLoad()
let url = NSURL(string: "https://messenger.com")
let request = NSURLRequest(URL: url!);
webView.mainFrame.loadRequest(request);
}
override var representedObject: AnyObject? {
didSet {
// do nothing
}
}
}
除了添加NSAppTransportSecurity
info.plist 的关键是通过 HTTPS 连接解锁 HTTP 流量,我没有进行任何其他设置。
Question
请先看一下这张图片。
一切看起来都很好并且工作正常,除了两件事。
-
上传图片不起作用 - 我在图片中标记为 1。
normally (as in other released apps or from web browsers) if you click that icon, it shows an explorer to upload a picture like below.
我的应用程序完全忽略用户对该图标的单击,因此我无法将任何图片上传到聊天中。有趣的是,如果我将图片拖放到webview
,它上传得很好。
-
共享图片不显示 - 我在图片中标记为 2。
again, from other browsers or released apps, it shows the pictures that I shared with participants like below. (of course I censored the pictures)
我的应用程序尝试加载图片,但不显示它们。我可以看到它正在尝试加载,因为加载时我看到圆形进度指示器。
Why?
我怀疑可能有一种方法可以监听在WebView
并链接到文件浏览器或类似的东西?
这个我不知道。我已登录 Messenger(基本上是 Facebook),所以我认为session
这里不是问题。也许是一些 jQuery 加载问题?
我应该怎么做才能解决这些问题?
- 确实有一个委托方法来打开一个新面板,称为
runOpenPanelForFileButtonWithResultListener
, 文档在这里 https://developer.apple.com/library/prerelease/mac/documentation/Cocoa/Reference/WebKit/Protocols/WebUIDelegate_Protocol/index.html#//apple_ref/occ/instm/NSObject/webView:runOpenPanelForFileButtonWithResultListener:.
在委托方法中,只需创建一个新的 NSOpenPanel,如下所示:
func webView(sender: WebView!, runOpenPanelForFileButtonWithResultListener resultListener: WebOpenPanelResultListener!, allowMultipleFiles: Bool) {
let openDialog = NSOpenPanel()
if (openDialog.runModal() == NSOKButton) {
let fileName: String = (openDialog.URL?.path)!
resultListener.chooseFilename(fileName) // Use chooseFilenames for multiple files
}
}
- 我只是尝试从 Messagers 应用程序创建一个 WebView,并且图像加载良好。
您应该尝试从界面生成器(或通过代码)启用 WebView 选项,例如“自动加载图像”或“启用动画图像”。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)