PhoneGap的渐进式增强功能



我正在开发PhoneGapping,这是我从头开始编写的一款移动网络应用程序,我想知道每个人对渐进增强的想法是什么?

现在,PhoneGap应用程序只是指向我们的域,所以服务器上的任何代码都是正在运行的。我想尽可能保持这种方式,但我想知道是否有某种方法可以检测观众是否通过PhoneGap,然后在此基础上启用其他功能(例如本地联系人、推送通知)。

我知道PhoneGap需要PhoneGap.js文件存在,而且似乎全面包含它会给非PhoneGap用户带来一些麻烦,所以这里的任何想法都是非常好的。谢谢

我会发布一个链接到一篇关于这方面的博客文章,并提供更多细节/示例,但本质上可以归结为三件事:

  1. 修改来自PhoneGap的请求,然后在服务器上检测
  2. 确保正确的Javascript API位于正确的位置
  3. 检测何时显示/启用PhoneGap特定功能

我目前完成这项工作的方式如下:

1) 修改来自PhoneGap的请求

您可以从PhoneGap应用程序向用户代理添加自定义字符串,然后在服务器上搜索该自定义字符串。最简单的方法(在Android上)是在platforms/android/src/path/to/your/app/[app_name].java中。在onCreate方法中,在super.loadUrl(Config.getStartUrl());行之后添加:

String ua = this.appView.getSettings().getUserAgentString();
this.appView.getSettings().setUserAgentString(ua + " your_custom_string");

2) 确保正确的Javascript API位于正确的位置

当您构建一个PhoneGap应用程序并使用本地源运行它时,PhoneGap使用的实际Javascript API会有一个后备方案。如果在本地运行,则项目目录中根本不需要cordova.jsphonegap.js文件。你可以在platforms/android/assets/www中找到你需要的文件。您正在查找cordova.jscordova_plugins.js和整个plugins/目录。那么,在你的网络应用程序中,你需要确保你为cordova.js指向的文件夹也有plugins/目录。例如:

<script type="text/javascript" src="/js/cordova.js"></script>

意味着所有内容都应该在webroot/js/文件夹中。

3) 检测何时显示/启用PhoneGap特定功能

这与从早期版本中读取your_custom_string的用户代理以及启用/禁用功能一样简单。除非查看器来自PhoneGap,否则您不会想加载cordova.js脚本(否则情况会变得奇怪),并确保在deviceready事件上设置了一个事件侦听器,并在该侦听器启动后执行任何PhoneGap特定的代码。

即将发布的博客文章将有一个使用Ionic和PhoneGap的联系人API的简单示例。


就这样!我真的很兴奋这为渐进增强打开了潜力。这使我能够同时支持移动网络和原生(Android,可能还有iOS),99%的代码库相同,并且只有在我知道用户拥有这些功能的情况下,我才能启用这些功能。这就像类固醇上的黑客特征检测。

相关内容

  • 没有找到相关文章

最新更新