乐闻世界logo
搜索文章和话题

How to open installed pwa from external url

8 个月前提问
5 个月前修改
浏览次数205

4个答案

1
2
3
4

当您希望通过外部URL直接打开已安装的PWA(Progressive Web App)项目时,可以采用几种方法来实现这一目标。以下是一些步骤和技术,可以帮助用户体验从外部链接直达特定内容的便利性。

1. 使用Web App Manifest中的 "start_url" 属性

在PWA的Manifest文件中,您可以指定一个 start_url,这是应用启动时默认打开的URL。您可以在这个URL后面添加查询参数或路径来定制启动时加载的内容。

例如,假设您的PWA主页URL是 https://example.com,您想通过一个特定的URL https://example.com/#/special-page 启动到一个专门的界面,您可以将Manifest中的 start_url 设置为:

json
"start_url": "/#/special-page"

每次用户通过桌面或移动设备上的PWA图标启动应用时,都会直接进入到 special-page

2. 利用 Service Worker 拦截和处理 URL

使用Service Worker,您可以拦截应用的网络请求,并根据URL的不同部分(如路径或查询参数)来改变应用的行为或路由。例如,当用户点击一个外部链接指向您的PWA时(如 https://example.com/?redirect=/profile),Service Worker可以解析这个URL,然后导航到对应的内部页面(如 /profile)。

这里是一个简单的Service Worker脚本片段,用于拦截和解析查询参数:

javascript
self.addEventListener('fetch', event => { const url = new URL(event.request.url); if (url.searchParams.has('redirect')) { const redirectPath = url.searchParams.get('redirect'); event.respondWith(caches.match(redirectPath).then(response => { return response || fetch(redirectPath); })); } });

3. 使用Deep Linking技术

对于移动设备,您还可以使用深链接(Deep Linking)技术,将特定的URL模式与您的PWA关联起来。这意味着当用户在移动设备上点击符合特定模式的链接时,操作系统可以直接打开您的PWA应用而不是默认的网页浏览器。

深链接实现起来比较复杂,需要在应用的web服务器上配置相应的文件(如Android的assetlinks.json或iOS的apple-app-site-association文件),并确保您的PWA可以正确处理这些入站URL。

结论

通过上述方法,您可以实现外部URL直接打开已安装的PWA的功能。选择最合适的方法取决于您的具体需求,比如应用的目标平台和预期的用户交互方式。实践中,可能需要结合使用几种技术来达到最佳的用户体验。

2024年6月29日 12:07 回复

If you are using Chrome in Android or any of the desktop OS, that would be the default behavior.

Check on "Android intent filter" in this link.

This feature is not supported in iOS yet for PWA apps(created using Safari- the only option for iOS as of June-2018).See "What PWAs can do on Android and not on iOS" section last point.

2024年6月29日 12:07 回复

For iOS, there is actually a very unknown way which you can install a .mobileconfig profile which installs a web clip (or multiple web clips if you like).

This will run your website in fullscreen and is very similar to how iOS PWAs work. You can also link to it online or send it as an Email attachment for your users to install.

Just make sure you add this for the webpage to open fullscreen:

shell
<key>FullScreen</key> <true/>

You can read more about creating your own from scratch here:

https://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/iPhoneOTAConfiguration/ConfigurationProfileExamples/ConfigurationProfileExamples.html

or if you have a Mac you can get the "Apple Configurator 2" App:

https://apps.apple.com/us/app/apple-configurator-2/id1037126344

or you can take the easy route and use a generator here if you don't have a Mac:

https://webclip.glitch.me/

2024年6月29日 12:07 回复

这个问题涉及到渐进式Web应用(PWA)的深度链接(deep linking)功能,这是通过外部URL来打开特定的已安装PWA项目。

要实现这个功能,您需要按照以下步骤操作:

  1. 配置Web应用清单(Web App Manifest): 渐进式Web应用依赖于一个名为 manifest.json的清单文件,它提供了应用的名称、图标、起始URL、显示模式以及背景颜色等信息。确保您的PWA项目中包含了一个正确配置的 manifest.json文件。

  2. 设置服务工作者(Service Worker): PWA通常会使用服务工作者来实现缓存、推送通知等功能。确保您的服务工作者脚本正确注册,可以控制App的页面。

  3. 使用通用链接(Universal Links)或App链接(App Links)

    • 对于iOS设备,您可以使用Apple提供的Universal Links。这需要您在网站的根目录下放置一个 apple-app-site-association文件,定义应该打开的PWA和相应的URL路径。
    • 对于Android设备,您可以使用Android App Links。在这种情况下,您需要在网站的 .well-known目录下创建一个 assetlinks.json文件,同样定义打开的PWA和URL路径。
  4. 处理URL中的数据: 当PWA通过外部链接打开时,您需要在服务工作者或者Web应用的页面脚本中解析URL,提取出必要的信息(如路径、查询参数等),并根据这些信息导航到应用程序的正确部分。

  5. 测试链接: 在您设置完后,确保测试您的链接是否正常工作。在不同的设备上测试,确保从外部URL可以正确地打开您的PWA。

举例来说,如果我有一个在线商店的PWA,并希望通过外部URL打开特定的产品页面,我将按照以下步骤操作:

  • 我会确保我的Web App Manifest中定义了 start_url,并且我的服务工作者可以控制应用的网页。
  • 我会在iOS设备上设置Universal Links,包括在服务器的根目录下添加 apple-app-site-association文件。
  • 对于Android设备,我会创建 assetlinks.json文件,并放置在 .well-known目录。
  • 在我的服务工作者或页面脚本中,我会编写代码来解析传入的URL,并导航到正确的产品页面。
  • 测试完成后,当用户点击一个指向特定产品的链接时,他们的设备将直接打开我的在线商店PWA,并显示该产品的详情。
2024年6月29日 12:07 回复

你的答案