Ionic3-本地通知的结束?

时间:2018-08-19 14:22:52

标签: ionic-framework ionic3 localnotification

道歉标题,但围绕离子通知和本地通知感到沮丧。 我使用ionic 2构建了一个使用本地通知的应用程序。 我已经升级到ionic3,并已尝试了所有方法,但无法获得本地通知。

最新版本的本地通知不支持离子通知,因此我必须使用早期版本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”:   CordovaError:无法通过获取插件cordova-plugin-app-event   注册表

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

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

这样做之后,我可以运行ionic build并成功完成了!好消息!。 坏消息-当我运行ionic服务时,它会启动该应用程序,但出现白屏且控制台错误:我收到一条错误消息

  

polyfills.js:3未处理的承诺拒绝:没有LocalNotifications的提供者! ;区域:任务:Promise.then;值:错误:没有LocalNotifications的提供者!

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

当我尝试运行android build时,出现以下错误。我正式没主意了。有帮助吗?

  

失败:生成失败,发生异常。   什么地方出了错:   任务':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;

2 个答案:

答案 0 :(得分:1)

在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 

所以我可以决定要升级什么

答案 1 :(得分:0)

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

我只是按照我的packages.json添加了此Cordova插件

  

“ 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...