@ionic-native/push 的离子问题

Oli*_*r H 2 android ionic-framework

几天来,我一直在尝试让推送通知在 ionic 中工作,到目前为止我已经阅读了 7 个教程,但是一旦我到了开始测试的时间,它们中的每一个都失败了!。是我一个人还是所有这些教程都过时了?

到目前为止,我已经尝试过以下教程:

  • c-sharpcorner.com
  • 扫文网
  • 媒体网
  • sitepoint.com
  • masteringionic.com
  • thielcole.github.io
  • 路易斯乔丹网

对于这些教程中的每一个,我都遇到了关于 Push 模块的墙,我以一种或另一种方式不断收到这些相同的错误,不同教程之间存在一些非常小的差异,但总的来说,这些错误是相同的,下面是来自我遵循的最新教程(路易斯乔丹教程):

From the app.component.ts file, i get an error for the constructor:
----------------------
typescript: C:/Users/***/Documents/ionic/push-luisjordan/src/app/app.component.ts, line: 15
Cannot find name 'Push'.

L15:  constructor (platform : Platform, statusBar : StatusBar, splashScreen : SplashScreen, private push : Push) {
L16:              platform.ready().then(() => {
----------------------

And from app.module.ts file, i get an error for the providers:
----------------------
typescript: C:/Users/***/Documents/ionic/push-luisjordan/src/app/app.module.ts, line: 12
Argument of type '{ declarations: (typeof HomePage | typeof MyApp)[]; imports: (ModuleWithProviders | typeof
Browse...' is not assignable to parameter of type 'NgModule'. Types of property 'providers' are
incompatible. Type '(typeof SplashScreen | PushOriginal | { provide: typeof ErrorHandler; useClass: typeof
IonicError...' is not assignable to type 'Provider[]'. Type 'typeof SplashScreen | PushOriginal | { provide:
typeof ErrorHandler; useClass: typeof IonicErrorH...' is not assignable to type 'Provider'. Type
'PushOriginal' is not assignable to type 'Provider'. Type 'PushOriginal' is not assignable to type
'ClassProvider'. Property 'provide' is missing in type 'PushOriginal'.

L12:  @NgModule({                                                                                                                                                                                                                                                                                                        
L13:    declarations: [
Run Code Online (Sandbox Code Playgroud)

为了防止把这个东西变成更大的文字墙,我制作了下面的 pastebin 页面,它包含与上面发布的相同的错误,但更重要的是它还包含 app.component.ts 和 app.module.ts 的代码

https://pastebin.com/RUH9egA9

为了帮助加快速度,这里是版本号的概述以及对我在其他离子问题上看到的常见问题的一些答复:

$ ionic info

Ionic:

   ionic (Ionic CLI)  : 4.8.0 (C:\Users\Olivier\AppData\Roaming\npm\node_modules\ionic)
   Ionic Framework    : ionic-angular 3.9.2
   @ionic/app-scripts : 3.2.1

Cordova:

   cordova (Cordova CLI) : 8.1.2 (cordova-lib@8.1.1)
   Cordova Platforms     : android 7.1.4
   Cordova Plugins       : cordova-plugin-ionic-keyboard 2.1.3, cordova-plugin-ionic-webview 2.3.2, (and 7 other plugins)

System:

   NodeJS : v10.2.1 (C:\Program Files\nodejs\node.exe)
   npm    : 6.5.0
   OS     : Windows 10



$ ionic cordova plugins
> cordova plugin ls

You have been opted out of telemetry. To change this, run: cordova telemetry on.
cordova-plugin-device 2.0.2 "Device"
cordova-plugin-ionic-keyboard 2.1.3 "cordova-plugin-ionic-keyboard"
cordova-plugin-ionic-webview 2.3.2 "cordova-plugin-ionic-webview"
cordova-plugin-splashscreen 5.0.2 "Splashscreen"
cordova-plugin-statusbar 2.4.2 "StatusBar"
cordova-plugin-whitelist 1.3.3 "Whitelist"
cordova-support-google-services 1.1.0 "cordova-support-google-services"
phonegap-plugin-multidex 1.0.0 "Multidex"
phonegap-plugin-push 2.2.3 "PushPlugin"



$ ionic cordova platform list
> cordova platform ls

You have been opted out of telemetry. To change this, run: cordova telemetry on.
Installed platforms:
  android 7.1.4
Available platforms:
  browser ~5.0.1
  ios ~4.5.4
  osx ~4.0.1
  windows ~6.0.0
Run Code Online (Sandbox Code Playgroud)
  • 在工作目录中,我使用“npm install --save @ionic-native/push”安装了模块
  • 我确保添加了 android 平台,并使用“ionic cordova emulate android”进行了测试
  • 我已经编辑了我的 config.xml 以获得一个与我的 firebase 应用程序匹配的小部件 ID(虽然我想这已经领先了?)

有没有人知道什么可能是错的?我已经阅读了好几天了,但我仍然不知道我可能会遗漏什么?每次我遇到 ionic 不接受推送模块的相同问题时... :(

提前致谢,如果有人在此墙文本后有任何其他问题,请随时提出。

Rat*_*a S 5

看起来 Ionic 团队最近对其原生插件进行了更改。

您似乎安装了 ionic 4 支持的插件(版本 >= 5.0.0)。由于您使用的是 ionic 3,请卸载该插件并安装 4.20.0 版本。

npm uninstall @ionic-native/push
Run Code Online (Sandbox Code Playgroud)

进而

npm i -s @ionic-native/push@4.20.0
Run Code Online (Sandbox Code Playgroud)

有关更详细的解释,您可以查看此答案/sf/answers/3807888241/