将媒体从另一个应用程序共享到我的应用程序时,如何在我的 PWA 应用程序中处理媒体共享?

Posted

技术标签:

【中文标题】将媒体从另一个应用程序共享到我的应用程序时,如何在我的 PWA 应用程序中处理媒体共享?【英文标题】:How can I handle Media sharing in my PWA app when sharing media from another app into my app? 【发布时间】:2021-04-06 11:51:33 【问题描述】:

我正在开发一款适用于网络版和移动版的渐进式网络应用。我正在与其他应用程序共享媒体文件,但是当我在选择我的应用程序后将来自另一个应用程序(或任何其他社交媒体,如 Facebook、Messenger、LinkedIn)的媒体共享到我的应用程序时,它只会打开并变成黑屏。我需要有关如何将屏幕转发到我的共享列表屏幕以及另一个应用程序共享的数据如何访问它们的帮助。有什么帮助吗?

【问题讨论】:

【参考方案1】:

仔细检查您的method"POST" 并且enctype 存在。 enctype 必须是 "multipart/form-data",并且必须在清单中添加 files 条目,并在其中指定 share_targetfiles 是一个数组,用于指定您的应用接受的文件类型。

更多信息来自:https://web.dev/web-share-target/

前台页面无法直接处理此数据。由于页面将数据视为请求,因此页面将其传递给服务工作者,您可以在其中使用 fetch 事件侦听器拦截它。从这里,您可以使用 postMessage() 将数据传回前台页面或将其传递给服务器:


    self.addEventListener('fetch', event => 
      const url = new URL(event.request.url);
      // If this is an incoming POST request for the
      // registered "action" URL, respond to it.
      if (event.request.method === 'POST' &&
          url.pathname === '/bookmark') 
        event.respondWith((async () => 
          const formData = await event.request.formData();
          const link = formData.get('link') || '';
          const responseUrl = await saveBookmark(link);
          return Response.redirect(responseUrl, 303);
        )());
      
    );

【讨论】:

以上是关于将媒体从另一个应用程序共享到我的应用程序时,如何在我的 PWA 应用程序中处理媒体共享?的主要内容,如果未能解决你的问题,请参考以下文章

如何将任务依赖项从另一个插件添加到我的 SBT 插件?

如何在 iOS 上整合社交媒体进行照片分享?

如何将我的UserControl从另一个项目(Dll)添加到我的WPF解决方案?

Ruby on Rails 的社交媒体共享按钮 Gem

Android 共享意图无法启动

如何让我的应用出现在其他应用的共享板中 - 例如whatsApp