V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Lenic
V2EX  ›  前端开发

[求助] 关于 UniApp 开发的 iPad App 下载问题

  •  
  •   Lenic ·
    Lenic · 2023-11-24 15:53:31 +08:00 · 658 次点击
    这是一个创建于 390 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我现在有个需求,目前找不到成熟的方案,求大大们指点一下:

    1. 现在开发的是一个 iPad 运行的 App ,后面称为「宿主 App 」
    2. 这个宿主 App 使用了 UniApp 开发
    3. 宿主 App 中有一个页面,是个全页面的 WebView
    4. WebView 中打开了一个网页 A
    5. 网页 A 有一个下载功能,是通过 Canvas 生成的二进制文件,就是要下载这个文件

    我的问题是:

    1. 如果不做任何处理,点击下载无响应
    2. 尝试过查找 WebView 的下载监听,但从文档中没有找到 // 或许是我阅读不仔细
    3. 尝试通过在网页 A 中使用 postMessage 的方式发消息到速度 App ,发现会限制消息大小,但从文档中没有找到限制 // 可能我没找到正确的地方
    4. 我曾经尝试将一个 2.3MB 的图片导出,就触发了消息大小限制,网页端调用 postMessage 后,在宿主 App 没有收到

    目前我的思路是:将这个 2.3MB 图片的二进制数据,以分片的方式向宿主 App 发送,然后在宿主 App 打开一个文件写入流,将二进制写进去。

    但是这个思路有问题:

    • 流需要一直打开,出现错误,或者有一个消息没有发到宿主 App ,流写入就会不完整 // 有可能生成的文件很大
    • 要么就是将所有消息都暂存在内存中,接收完了再一次性写入,就是无法支持太大的文件导出

    各位大大,有什么思路吗?奇怪的是,我在网上搜索解决方案的过程中,发现几乎没人提出这个问题。在我看来,WebView 下载文件是一个很常见的需求,为什么没人提呢?是我有什么地方没弄对吗?

    2 条回复    2023-11-24 23:34:43 +08:00
    344457769
        1
    344457769  
       2023-11-24 16:07:08 +08:00   ❤️ 1
    不用那么麻烦吧?如果 webview 加载的网页是你自己的,可以直接在网页里调用 html5plus 的 API ,参考这个

    https://blog.csdn.net/sunhuaqiang1/article/details/128653551
    Lenic
        2
    Lenic  
    OP
       2023-11-24 23:34:43 +08:00
    @344457769 感谢大佬,这个参考文档完全匹配我的需求,问题已经解决了,不用分片和 postMessage 了 👍
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1392 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 23:55 · PVG 07:55 · LAX 15:55 · JFK 18:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.