BioforestChain / dweb_browser

BioforestChain Infrastructure
https://docs.dweb-browser.org
MIT License
13 stars 4 forks source link

【提案】🎉 shortcut.sys.dweb #62

Closed Gaubee closed 7 months ago

Gaubee commented 11 months ago
  1. ✨ ShortcutManagerController/.Render 排序、管理要显示在原生上的项目
  2. /registry?title=*&uri=*&icon?=* 提供功能注册,我们需要根据对方的 mmid+version 来进行保存
    • icon: 使用对方的 app-icon 做为默认图标,如果对方自己提供了 shortcut-icon,那么将 app-icon 做为 shortcut-icon 的角标
  3. ✨ 每次 dweb browser 启动的时候,都要遍历 shortcut 的对应的应用是否被卸载,从而移除相应的图标注册(可以考虑移动到 tmp 文件夹中,如果应用恢复,那么可以找回;否则空间回收时被清理)
  4. ✨ 监听 dns 安装到应用的变更
  5. ✨ 提供管理界面,允许用户来拖动排序这些 shortcut,并且最终反应到原生平台上的 shortcut 可定是有限额度的,所以用户可以看到哪些 shortcut 是被启用的
  6. ✨ 如果 shortcut 过多,我们在原生平台上至少要留一个“更多”,打开后能直接显示 shortcut.sys.dweb 的主界面,用户能找到所有的 shortcut
  7. ❓ 有没有可能实现声明式的 shortcut

参考资料:

jackie-yellow commented 7 months ago

这种长按后显示的 shortcut 如果在 webview中渲染,获取 shortcut.std.dweb 会增加工作和影响性能,是否可以 desk.browser.dweb 转移为原生的开发。

Gaubee commented 7 months ago

这种长按后显示的 shortcut 如果在 webview 中渲染,获取 shortcut.std.dweb 会增加工作和影响性能,是否可以 desk.browser.dweb 转移为原生的开发。

这是 sys.dweb,是给到原生那边做的。

如果是要在我们自己的 desk.browser.dweb 上去长按的,那应该是将 shortcut.std.dweb 作为 subprotocol 来实现,那么应该是 desk.browser.dweb 会去持久化存储这些 shortcut,而不是动态查询。动态查询跟谁查,总不能应用启动然后跟他查把。 但是我个人不建议做 shortcut.std.dweb,这个很奇怪,但是可以做 shortcut.window.std.dweb

waterbang commented 7 months ago

data

传递 data:string 通过ipc.event 发送到各个模块

新增dwebLink

dweb://shortcutopen?mmid=${mmid}&uri=${uri}

以后也可以通过这个,快速实现一些快速启动业务

waterbang commented 7 months ago

ios 跟android 图标规范不同,因此暂时算完成这个 issuse ,具体使用查看 开发者文档

Gaubee commented 7 months ago

使用对方的 app-icon 做为默认图标,如果对方自己提供了 shortcut-icon,那么将 app-icon 做为 shortcut-icon 的角标


综上所述:

  1. 我们不能使用“app-icon 做为 shortcut-icon 的角标”作为一个完全的默认行为
    1. 如果使用 https 协议,那么我们可以尝试使用它
    2. 否则我们可以使用 shortcut 的一些文本信息(比如 title 的第一个字符)和 manifest 中的 themeColor 来生成“文字图标”
  2. 更加未来的方案,请到 issues#112 中进行讨论
waterbang commented 7 months ago

暂时关闭此issuse 因为 iOS图片的图片传递需要 UIApplicationShortcutIcon , 此方法在kmp不存在,可能得设置图片数据到 userInfo 然后到swift 里进行注入

kingsword09 commented 7 months ago

暂时关闭此issuse 因为 iOS图片的图片传递需要 UIApplicationShortcutIcon , 此方法在kmp不存在,可能得设置图片数据到 userInfo 然后到swift 里进行注入

kmp中存在UIApplicationShortcutIcon,在platform.UIKit.UIApplicationShortcutIcon,但是iOS目前仅支持使用system symbol imageiconTypeasset catalogBundle 中的图片资源,因此icon必须在开发阶段就添加进去,无法在应用内直接生成image到资源中来加载。

iOS 目前支持的Icon:

  1. 系统提供: iconType SF Symbols
  2. 开发阶段提供,需要使用Xcode添加资源 asset catalog Bundle