离子推送:Web 客户端安装不正确

Ionic push: web client incorrectly installs

遵循此处的指南:http://docs.ionic.io/docs/push-from-scratch我在执行第 2 步时遇到问题 - 安装 ionic add ionic-platform-web-client。

我的应用程序中的索引文件按原样添加了 <script src="lib/ionic-platform-web-client/dist/ionic.io.bundle.min.js"></script>,但是该位置不存在该文件,即使在 运行 'ionic lib update' 之后也是如此。

(为了便于在本节中进行解释,我使用了捆绑包的非缩小版本:ionic.io.bundle.js(文件的完整版本和缩小版本的结果相同))。

https://github.com/driftyco/ionic-platform-web-client/tree/master/dist 手动添加 ionic.io.bundle.js 会给我这个错误:

“未捕获类型错误:无法调用未定义

的方法 'get'

ionic.io.bundle.js (3429,0)"

来自此代码:

key: "get", value: function get(name) { return this._settings.get(name); }

我找到了一个 'hacky' 方法来让开发推送工作,只需返回 this 而不是完整的 return this._settings.get(name) 语句,尽管这只真正适合调试的目的,另外不允许通过设置 'ionic config set dev_push false' 或在 .io-config.json.

中手动设置 "dev_push":false 来移除开发者模式

我不确定手动添加 ionic.io.bundle.js 是否只是增加了我的问题,或者这是否是正确的方法,所产生的错误才是真正的问题?

我是运行: 离子 1.1.0 离子 CLI 1.7.7, 科尔多瓦 5.3.3, 凉亭 1.6.2, npm 2.11.3, visual studio 2015 社区 cordova/ionic 设置, 我还更新了我的 android 平台——我目前正在为此构建(部署到 nexus 7)。

虽然我仍然无法通过 'ionic add ionic-platform-web-client' 在 cli 中安装 ionic web 平台,但我已经设法让 ionic 推送通知正常工作。

  1. 首先,我确保在 cli 中的应用程序目录中使用 'ionic lib update'。由于我的项目设置不同(感谢 visual studio)。您可能已经使用自定义设置获得了这些文件,但我发现将这些目录放在适当的位置是很好的。

  2. 其次,我手动下载了 Web 客户端 https://github.com/driftyco/ionic-platform-web-client4,而不仅仅是 ionic.io.bundle.min.js,这似乎解决了我之前提到的 "Uncaught TypeError: Cannot call method 'get' of undefined" 问题,在我移动了整个这在我的 lib 目录中。 (确保下载文件夹的名称匹配: "ionic-platform-web-client" 完全匹配,并且不包含任何类似 master 的词)。

  3. 第三,因为我无法添加推送插件的 1.3.0 版本(它不断地给我心爱的 'uh oh' 错误),我改用了 1.2.3。我通过以下方式安装了它:'cordova plugin add https://github.com/phonegap/phonegap-plugin-push.git#1.2.31'。虽然我刚刚注意到 1.4.0 可用,但它也可以工作?

这应该有望解决您遇到的任何问题,即使它不是完美的解决方案。作为旁注:我知道在离子页面之一的某处提到你需要有一个传统的项目设置然后移动相关文件但是最好有一些关于如何去做的描述 - 正如你可能不知道相关文件是什么。对于来到这里挠头的任何人,如果您使用 visual studio 从头开始​​或任何其他自定义设置创建离子项目,您可能会 运行 遇到相同的问题,因为相关目录已创建使用 'ionic start myApp' 可能会被省略。

ionic.io.bundle.js 中的 Cannot call method 'get' of undefined 是由于捆绑包中缺少设置而发生的。 这可以通过 运行:

来解决
ionic config build