使用 WebKit 的简单 Swift Cocoa 应用程序:上传图片不起作用

2024-03-19

我决定制作自己的 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
        }
    }
}

除了添加NSAppTransportSecurityinfo.plist 的关键是通过 HTTPS 连接解锁 HTTP 流量,我没有进行任何其他设置。

Question

请先看一下这张图片。

一切看起来都很好并且工作正常,除了两件事。

  1. 上传图片不起作用 - 我在图片中标记为 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. example of browser upload image

    • 我的应用程序完全忽略用户对该图标的单击,因此我无法将任何图片上传到聊天中。有趣的是,如果我将图片拖放到webview,它上传得很好。

  2. 共享图片不显示 - 我在图片中标记为 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) example of browser showing shared pics

    • 我的应用程序尝试加载图片,但不显示它们。我可以看到它正在尝试加载,因为加载时我看到圆形进度指示器。

Why?

  1. 我怀疑可能有一种方法可以监听在WebView并链接到文件浏览器或类似的东西?

  2. 这个我不知道。我已登录 Messenger(基本上是 Facebook),所以我认为session这里不是问题。也许是一些 jQuery 加载问题?

我应该怎么做才能解决这些问题?


  1. 确实有一个委托方法来打开一个新面板,称为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
    }
}
  1. 我只是尝试从 Messagers 应用程序创建一个 WebView,并且图像加载良好。
    您应该尝试从界面生成器(或通过代码)启用 WebView 选项,例如“自动加载图像”或“启用动画图像”。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 WebKit 的简单 Swift Cocoa 应用程序:上传图片不起作用 的相关文章

随机推荐