如何使用cordova-plugin-local-notification在离子的特定时间每天获取本地通知

Posted

技术标签:

【中文标题】如何使用cordova-plugin-local-notification在离子的特定时间每天获取本地通知【英文标题】:How to get local notification everyday at specific time in ionic using cordova-plugin-local-notification 【发布时间】:2018-05-10 16:40:51 【问题描述】:

我在 2 天前发布了这个问题,但我没有收到任何答案。 我想每天上午 10:00 收到本地通知。 我的代码是: 而且有时我会收到通知,然后无法通过在通知托盘上交换来删除它。

请检查我的代码并尽快给我答复

import  Component  from '@angular/core';
import  Platform, NavController, ToastController, AlertController   from 'ionic-angular';
import  StatusBar  from '@ionic-native/status-bar';
import  SplashScreen  from '@ionic-native/splash-screen';

import  HomePage  from '../pages/home/home';
import  MainpagePage  from "../pages/mainpage/mainpage";
import  LoginPage  from "../pages/login/login";
import  SplashPage  from "../pages/splash/splash";
import  Observable  from 'rxjs/Rx';
import  Geolocation  from '@ionic-native/geolocation';
import  SQLite, SQLiteObject  from '@ionic-native/sqlite';
import  DbHandlerProvider  from '../providers/db-handler/db-handler';
import  LocationTracker  from '../providers/location-tracker/location-tracker';
import  BackgroundMode  from '@ionic-native/background-mode';
import  HttpService  from '../pages/services/httpService';
import  LocalNotifications  from '@ionic-native/local-notifications';
import moment from 'moment';
import  Diagnostic  from '@ionic-native/diagnostic';
declare let cordova: any;
import  LocationAccuracy  from '@ionic-native/location-accuracy';
import  Subscription  from 'rxjs';

@Component(
  templateUrl: 'app.html'
)
export class MyApp 
  rootPage:any;
  db: SQLiteObject;
  time: any;
  arrTime: any = [];
  arrNotification: any = [];
  onResumeSubscription: Subscription;

constructor(public platform: Platform, statusBar: StatusBar, splashScreen: SplashScreen,private geolocation: Geolocation,
          private sqlite: SQLite, private dbHandlerProvider: DbHandlerProvider,
          public locationTracker: LocationTracker,private backgroundMode: BackgroundMode,
          public httpService: HttpService, public toastCtrl: ToastController,private localNotifications: LocalNotifications,
          private diagnostic: Diagnostic, private alertCtrl: AlertController, private locationAccuracy: LocationAccuracy) 

          this.dbHandlerProvider.createDatabase();
          this.backgroundMode.enable();
          if(localStorage.getItem('UserId') == null)
                this.rootPage = LoginPage;
           else 
                this.rootPage = MainpagePage;
           
          platform.ready().then(() => 
             setTimeout(()=>
                 this.pushNotification();
            ,1000);
          statusBar.styleDefault();
        );



pushNotification() 
    var pushTime = moment().add(0, 'days').hours(10).minutes(0).seconds(0);
    let data = 
        text: 'Aaron Harper Notification ',
        every: 'day',
        firstAt: pushTime.toDate()
    
    cordova.plugins.notification.local.schedule(data);


提前谢谢你...

【问题讨论】:

您遇到什么错误?怎么了?你还尝试过什么?你能显示一个有效的硬编码时间/日期吗?为了获得最佳结果并获得答案,您应该关注***.com/help/mcve 错误不会每天收到通知...... 我在我的问题中显示了我的代码,如果还有什么问题请告诉我 【参考方案1】:

试试:

var pushTime = moment().add(0, 'days').hours(10).minutes(0).seconds(0);
cordova.plugins.notification.local.schedule(
  text: 'Tracking Enabled ',
  every: 'day',
  firstAt: pushTime.toDate()
);

它应该在今天上午 10 点安排第一个通知,然后所有下一个通知将与第一个通知间隔 1 天,即每天上午 10 点。

【讨论】:

你设定未来的时间了吗?您可以尝试提前几分钟设置时间并every: 'minute' 并检查。 我尝试了上面的代码,我发现....我现在运行代码并将日期从电话设置更改为明天上午 10:00,然后通知没有到来,但我将日期更改为 5 月 12 日5 月 13 日通知来了 为什么没有在 5 月 12 日上午 10:00 收到通知 我还发现有时候通知永远不会来 发布你的代码作为更新来回答,然后我打电话看一下。

以上是关于如何使用cordova-plugin-local-notification在离子的特定时间每天获取本地通知的主要内容,如果未能解决你的问题,请参考以下文章

如果加入条件,我该如何解决。如果使用字符串连接,我如何使用

如何使用本机反应创建登录以及如何验证会话

如何在自动布局中使用约束标识符以及如何使用标识符更改约束? [迅速]

如何使用 AngularJS 的 ng-model 创建一个数组以及如何使用 jquery 提交?

如何使用laravel保存所有行数据每个行名或相等

如何使用 Math.Net 连接矩阵。如何使用 Math.Net 调用特定的行或列?