Ionic3 - 本地通知的结束?



为戏剧性的标题道歉,但我对离子和本地通知有很多挫败感。 我使用使用本地通知的ionic 2构建了一个应用程序。 我已经升级到ionic3并尝试了所有方法,但无法使本地通知正常工作。

最新版本的本地通知不支持 ionic 因此我必须使用早期版本 0.8.4 或 0.8.5。 但是尝试安装这些版本会引发错误。我已经尝试了所有方法,包括启动一个干净的ionic3项目和安装本地通知。(例如,我尝试遵循此 http://masteringionic.com/blog/2018-01-09-adding-local-notifications-to-an-ionic-framework-mobile-app/(

没有任何效果。不确定我们如何在没有本地通知的情况下使用 Ionic 作为生产框架?

有没有人得到这个工作或有任何建议?

谢谢

更新:最近即使只是尝试安装本地通知也失败

无法安装"de.appplant.cordova.plugin.local-notification": Cordova错误:无法通过以下方式获取插件cordova-plugin-app-event 注册表

更新:我取得了一点进展。 我又玩了一些,决定看看我拥有的另一个使用本地通知的旧离子项目。 它使用的是特定版本的本地通知,所以我去安装了该特定版本。

npm install @ionic-native/local-notifications@3.12.1

完成此操作后,我可以运行离子构建,并且它没有失败就完成了!!好消息!。 坏消息 - 当我运行 ionic serve 时,它会启动应用程序,但出现白屏和控制台错误:我收到一个错误,上面写着

polyfills.js:3 未处理的承诺拒绝:本地通知没有提供程序! ;区:;任务:承诺;值:错误:本地通知没有提供程序!

即使我已将其添加到我的应用程序模块中的提供商列表中。

当我尝试运行安卓版本时,出现以下错误。我正式没有想法了。有什么帮助吗???

失败

:生成失败,出现异常。 出了什么问题: 任务":transformClassesWithDexForDebug"的执行失败。 com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.dex.DexException: 多个 dex 文件定义 Lorg/apache/cordova/BuildHelper; 构建失败 总时间:29.376秒 错误: cmd: 命令失败,退出代码为 1 错误输出: 失败:生成失败,出现异常。 任务":transformClassesWithDexForDebug"的执行失败。 com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.dex.DexException: 多个 dex 文件定义 Lorg/apache/cordova/BuildHelper;

在 Package.json 中,我升级了

"@ionic-native/local-notifications": "^5.5.1"

并且现在正在工作。

我做了

$npm i -g npm-check-updates
$npm-check-updates -u
$npm install

但是升级所有错误都会丢失。 所以我从package.json和package-lock.json回滚

然后决定仅在package.json中手动更改

"@ionic-native/local-notifications": "^5.5.1"

然后做了:

$npm install

注意:$npm-check-updates -u.给了我一个这样的清单:

@angular/common                           ^7.2.2  →  ^7.2.14 
@angular/core                             ^7.2.2  →  ^7.2.14 
@angular/forms                            ^7.2.2  →  ^7.2.14 
@angular/http                             ^7.2.2  →  ^7.2.14 
@angular/platform-browser                 ^7.2.2  →  ^7.2.14 
@angular/platform-browser-dynamic         ^7.2.2  →  ^7.2.14 
@angular/router                           ^7.2.2  →  ^7.2.14 
@angular/service-worker                   ^7.2.8  →  ^7.2.14 
@ionic-native/camera                      ^5.2.0  →   ^5.5.1 
@ionic-native/core                        ^5.0.0  →   ^5.5.1 
@ionic-native/device                      ^5.3.0  →   ^5.5.1 
@ionic-native/file                        ^5.2.0  →   ^5.5.1 
@ionic-native/file-path                   ^5.2.0  →   ^5.5.1 
@ionic-native/ionic-webview               ^5.2.0  →   ^5.5.1 
@ionic-native/local-notifications         ^5.2.0  →   ^5.5.1 
@ionic-native/native-audio                ^5.2.0  →   ^5.5.1 
@ionic-native/network                     ^5.2.0  →   ^5.5.1 
@ionic-native/power-management            ^5.4.0  →   ^5.5.1 
@ionic-native/splash-screen               ^5.0.0  →   ^5.5.1 
@ionic-native/status-bar                  ^5.0.0  →   ^5.5.1 
@ionic/angular                            ^4.1.0  →   ^4.3.1 
cordova-android                            7.1.4  →    8.0.0 
cordova-android-support-gradle-release    ^2.0.1  →   ^3.0.0 
cordova-plugin-filepath                    1.5.1  →    1.5.4 
cordova-plugin-ionic-webview              ^3.1.2  →   ^4.0.1 
cordova-sqlite-storage                     3.1.0  →    3.2.0 
core-js                                   ^2.5.4  →   ^3.0.1 
ionic-selectable                          ^4.4.0  →   ^4.4.1 
rxjs                                      ~6.3.3  →   ~6.5.1 
zone.js                                  ~0.8.29  →   ~0.9.1 
@angular-devkit/architect                ~0.12.3  →  ~0.13.8 
@angular-devkit/build-angular            ~0.13.0  →  ~0.13.8 
@angular-devkit/core                      ~7.2.3  →   ~7.3.8 
@angular-devkit/schematics                ~7.2.3  →   ~7.3.8 
@angular/cli                              ~7.3.1  →   ~7.3.8 
@angular/compiler                         ~7.2.2  →  ~7.2.14 
@angular/compiler-cli                     ~7.2.2  →  ~7.2.14 
@angular/language-service                 ~7.2.2  →  ~7.2.14 
@ionic/angular-toolkit                    ~1.4.0  →   ~1.5.1 
@types/jasmine                            ~2.8.8  →  ~3.3.12 
@types/jasminewd2                         ~2.0.3  →   ~2.0.6 
@types/node                             ~10.12.0  →  ~12.0.0 
codelyzer                                 ~4.5.0  →   ~5.0.1 
jasmine-core                             ~2.99.1  →   ~3.4.0 
karma                                     ~3.1.4  →   ~4.1.0 
karma-coverage-istanbul-reporter          ~2.0.1  →   ~2.0.5 
karma-jasmine                             ~1.1.2  →   ~2.0.1 
karma-jasmine-html-reporter               ^0.2.2  →   ^1.4.2 
protractor                                ~5.4.0  →   ~5.4.2 
ts-node                                   ~8.0.0  →   ~8.1.0 
tslint                                   ~5.12.0  →  ~5.16.0 
typescript                                ~3.1.6  →   ~3.4.5 

所以我可以决定升级什么

最后,我直接使用 Cordova 插件,而不使用离子原生层。结果,我能够使用本地通知的分支,到目前为止,该分支在所有设备(android 和 ios(中都运行良好。

我只是根据我的软件包添加了这个科尔多瓦插件.json

"cordova-plugin-local-notification": "git+https://github.com/Steffaan/cordova-plugin-local-notifications.git",

然后我的代码看起来像这样...

import {Platform} from 'ionic-angular';
import { environment } from '../../environments/environment.prod';
declare var cordova;
@Injectable()
export class Notifications {
localNotifications: any;
constructor(public storage: Storage,   public platform: Platform, public settings: Settings) {
this.localNotifications = cordova.plugins.notification.local;
}
getAllNotifications(): Promise<any[]> {
return new Promise(resolve => {
this.localNotifications.getAll(resolve);
});
}
etc...

最新更新